简单的多线程之间的通讯
2014-03-03 08:57
387 查看
/*
* 客户端
*/
package com.derun.tcp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class TCPClient {
public static void main(String[] args) {
try (Socket socket = new Socket("localhost",1234);
PrintWriter pw = new PrintWriter(socket.getOutputStream());
BufferedReader back = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in,"GBK"));) { //"GBK"防止乱码
//Socket socket = new Socket("192.168.16.105", 1234);
//Socket socket = new Socket(InetAddress.getLocalHost(),1234);
//Socket socket = new Socket("127.0.0.1",1234);
while (true) {
System.out.println("您说:");
String content = br.readLine(); //接收键盘输入
pw.println(content);
pw.flush(); //刷新
String echo = back.readLine();
System.out.println(echo);
if ("over".equals(content)) {
break;
}
}
//pw.println("hello");
} catch (IOException ex) {
}
}
}
/*
* 服务器端TCP
主要用到API:java.net.ServerSocket和java.net.Socket
*/
package com.derun.tcp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPServer {
public static void main(String[] args) {
System.out.println("正在启动服务器···");
try (ServerSocket serverSocket = new ServerSocket(1234);){ //端口号为1234
System.out .println("正在监听客户端连接请求·····");
try (Socket socket = serverSocket.accept(); //阻塞,等待客户端的连接要求
//InputStream is = socket.getInputStream ();
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter pw = new PrintWriter(socket.getOutputStream());
){
String content = "";
while((content = br.readLine()) != null){
System.out.println("客户端说:" + content);
pw.println("已收到内容" + content);
pw.flush();
}
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
/*
* 多线程服务器端TCP
主要用到API:java.net.ServerSocket和java.net.Socket
*/
package com.derun.tcp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
class TCPServerThread extends Thread {
private Socket socket;
TCPServerThread(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try (BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter pw = new PrintWriter(socket.getOutputStream());) {
String content = "";
while ((content = br.readLine()) != null) {
System.out.println("客户端说:" + content);
pw.println("已收到内容" + content);
pw.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class TCPServer2 {
public static void main(String[] args) {
System.out.println("正在启动服务器···");
try (ServerSocket serverSocket = new ServerSocket(1234);) { //端口号为1234
System.out.println("正在监听客户端连接请求·····");
Socket socket = serverSocket.accept();
new TCPServerThread(socket).start();
/*try (Socket socket = serverSocket.accept(); //阻塞,等待客户端的连接要求
//InputStream is = socket.getInputStream ();
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter pw = new PrintWriter(socket.getOutputStream());
){
String content = "";
while((content = br.readLine()) != null){
System.out.println("客户端说:" + content);
pw.println("已收到内容" + content);
pw.flush();
}
}
*/
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
* 客户端
*/
package com.derun.tcp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class TCPClient {
public static void main(String[] args) {
try (Socket socket = new Socket("localhost",1234);
PrintWriter pw = new PrintWriter(socket.getOutputStream());
BufferedReader back = new BufferedReader(new InputStreamReader(socket.getInputStream()));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in,"GBK"));) { //"GBK"防止乱码
//Socket socket = new Socket("192.168.16.105", 1234);
//Socket socket = new Socket(InetAddress.getLocalHost(),1234);
//Socket socket = new Socket("127.0.0.1",1234);
while (true) {
System.out.println("您说:");
String content = br.readLine(); //接收键盘输入
pw.println(content);
pw.flush(); //刷新
String echo = back.readLine();
System.out.println(echo);
if ("over".equals(content)) {
break;
}
}
//pw.println("hello");
} catch (IOException ex) {
}
}
}
/*
* 服务器端TCP
主要用到API:java.net.ServerSocket和java.net.Socket
*/
package com.derun.tcp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPServer {
public static void main(String[] args) {
System.out.println("正在启动服务器···");
try (ServerSocket serverSocket = new ServerSocket(1234);){ //端口号为1234
System.out .println("正在监听客户端连接请求·····");
try (Socket socket = serverSocket.accept(); //阻塞,等待客户端的连接要求
//InputStream is = socket.getInputStream ();
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter pw = new PrintWriter(socket.getOutputStream());
){
String content = "";
while((content = br.readLine()) != null){
System.out.println("客户端说:" + content);
pw.println("已收到内容" + content);
pw.flush();
}
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
/*
* 多线程服务器端TCP
主要用到API:java.net.ServerSocket和java.net.Socket
*/
package com.derun.tcp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
class TCPServerThread extends Thread {
private Socket socket;
TCPServerThread(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try (BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter pw = new PrintWriter(socket.getOutputStream());) {
String content = "";
while ((content = br.readLine()) != null) {
System.out.println("客户端说:" + content);
pw.println("已收到内容" + content);
pw.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class TCPServer2 {
public static void main(String[] args) {
System.out.println("正在启动服务器···");
try (ServerSocket serverSocket = new ServerSocket(1234);) { //端口号为1234
System.out.println("正在监听客户端连接请求·····");
Socket socket = serverSocket.accept();
new TCPServerThread(socket).start();
/*try (Socket socket = serverSocket.accept(); //阻塞,等待客户端的连接要求
//InputStream is = socket.getInputStream ();
BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter pw = new PrintWriter(socket.getOutputStream());
){
String content = "";
while((content = br.readLine()) != null){
System.out.println("客户端说:" + content);
pw.println("已收到内容" + content);
pw.flush();
}
}
*/
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
相关文章推荐
- Java nio一个简单例子和画出之间通讯简图
- VC++ 多线程之间的通讯
- 简单而强大的多线程串口编程工具CserialPort类(附VC基于MFC单文档协议通讯源程序及详细编程步骤)
- WebSocket实现Android客户端之间的简单通讯
- 对于多线程之间的通讯的理解
- Prism 框架中使用IEventAggregator事件聚合器简单实现ViewModel之间的通讯
- qt 多线程之间通讯
- 多线程快速入门+ 多线程之间通讯
- 【Java多线程】多线程之间实现通讯与生产者与消费者模式
- qt 多线程之间通讯
- iOS边练边学--多线程介绍、NSThread的简单实用、线程安全以及线程之间的通信
- 多线程之间实现通讯,join,yield,lock
- 多线程之间实现通讯
- 线程开发之多线程之间的通讯实现
- Java 多线程ServerSocket通讯简单实例(基于TCP协议)
- 线程开发之多线程之间的通讯实现
- Android面试篇之多线程[线程之间的通讯]
- 多线程 生产者消费者模式 线程之间的通讯问题
- java--通过socket和多线程进行多个客服端与服务器的简单通讯--基于tcp
- 基于TCP协议的Socket通讯,实现多线程简单登录