您的位置:首页 > 理论基础 > 计算机网络

Java 网络编程中 TCP 通信服务端的多线程模型

2014-03-07 00:00 686 查看
Java 中 TCP 通信服务端的多线程模型基本步骤:
创建 ServerSocket 对象,指定监听的端口号。


将 accept() 方法作为循环条件,循环监听客户端的请求。


监听到请求后,使用实现的线程类来生存线程对象。


在线程的 run() 方法中进行通信操作

服务端代码 TCPServerByThread :

import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;

public class TCPServerByThread {

	public static void main(String[] args) throws IOException {
		ServerSocket ss = new ServerSocket(8888);   //用端口号8888创建一个ServerSocket对象
		Socket s = null;
		
		while((s = ss.accept()) != null) {   //循环监听来自客户端的请求,当监听到一个客户端的请求就创建一个线程
			new ListenerThread(s).start();
		}
		ss.close();
	}
}

class ListenerThread extends Thread {
	private Socket socket;
	
	public ListenerThread(Socket socket) {
		super();
		this.socket = socket;
	}
	
	public void run() {
		try {
			OutputStream os = socket.getOutputStream();
			PrintWriter pw = new PrintWriter(os);
			pw.write(this.getName() + " now time: " + new Date());
			pw.flush();
			pw.close();
			socket.close();
		} catch (IOException e) {
			e.printStackTrace();
		}	
	}
}


客户端 TCPClinet:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

public class TCPClinet {

	public static void main(String[] args) throws UnknownHostException, IOException {
		Socket s = new Socket("localhost",8888);
		InputStream is = s.getInputStream();
		InputStreamReader isr = new InputStreamReader(is);
		BufferedReader br = new BufferedReader(isr);
		
		String str = br.readLine();
		System.out.println("Message:" + str);
	}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: