socket多客户端通信
多线程的知识点
改后 代码
多线程服务器
多线程服务器
多线程服务器
多线程服务器
服务器创建ServerSocket,循环调用accept()等待客户端连接
客户端创建一个socket并请求和服务器端连接
服务器端接受客户端请求,创建socket与该客户建立专线连接
建立连接的两个socket在一个单独的线程上对话
服务器端继续等待新的连接
应用多线程来实现服务器与客户端之间的通信
服务器端创建ServerSocket,循环调用accept()等待客户端连接
服务器端创建一个socket并请求和服务器端连接
服务器端接受客户端请求,创建socket与该客户端建立专线连接
建立连接的两个socket在一个单独的线程上对话
服务器端继续等待新的连接
多线程服务器之间通信的步骤
应用多线程实现服务器与多客户端之间的通信
多线程服务器及基本步骤
多线程服务器
socket-多线程代码(多个客户端请求)
多线程实现多客户端的通信:
创建服务器线程处理类,传递监听到的客户端Socket,重写run()方法实现读取客户端信息并反馈客户端
//在服务端中循环监听等待客户端的连接实现多线程
while(true) {
//调用accept()监听,等待客户端的连接
socket=serverSocket.accept();
//创建一个新的线程
ServerThread serverThread=new ServerThread(socket);
//启动线程
serverThread.start();
count++;
System.out.println("客户端数量为:"+count);
InetAddress address=socket.getInetAddress();
System.out.println("客户端ip地址为:"+address.getHostAddress());
}
多线程步骤
多线程服务器
应用多线程来实现服务器与多客户端之间的通信
选中全部的异常处理 :Alt + shift +Z
服务器一直处于监听状态。每进来一个客户端,创建一个线程
多线程服务器
主线程负责创建socket
* 一个线程用来读取
* 一个线程用来写入,用两个内部类
* 要用多线程实现,send线程和recived线程同时访问buff数据区。
* 发送完成后notify,接收线程。接收线程自身wait
* 接收的说,我先wait一下,可能缓存中还没有数据,我会拿到空值的。
* 发送的说Ok,我先写,写完了我notifyall你。我就一直锁着。变成并行处理了。
每个客户端连接服务端都会产生一个新的socket。
socket关闭条件时
一种写法:if(socket!=null)socket.close();
另一种写法:if(!socket.isClosed())socket.close();
多线程服务器操作
多线程通信
1
多线程服务器
应用多线程实现服务器与多客户端之间的通信