TCPThreadServer.java(服务器端):
package cn.xxx.demo;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class TCPThreadServer {
public static void main(String[] args) throws IOException{
ServerSocket server = new ServerSocket(8000);
while(true){
//每获取到一个客户端连接,就新建一个线程。 一个客户对应一个线程,多个用户多个线程。
Socket socket = server.accept(); // 获取客户端连接的套接字。
new Thread( new Upload(socket) ).start(); // 匿名内部类实现线程。 通过Runnable实现类实例化线程。
}
}
}
Upload.java(线程业务类,实现Runnable接口,重写run方法):
package cn.xxx.demo;
import java.net.ServerSocket;
import java.net.Socket;
public class Upload implements Runnable{ // 实现Runnable接口
private Socket socket; // 获取到的客户端套接字
public Upload(Socket socket){ // 构造器
this.socket=socket;
}
public void run() { // 重写run方法
// 具体的业务逻辑
}
}