在Socket编程 - 单个客户端中,服务端只支持单个客户端的连接请求。
如果有多个客户端连接呢?需要有一个线程一直监听客户端请求,收到请求后分发给其它的线程处理。这和jetty的处理方式类似。只需要改动服务端的代码就可以了。
服务端:
public class MyMultiClientsServer {
private static final int SERVER_PORT = 4451;
ServerSocket server;
Socket socket;
public MyMultiClientsServer() {
try {
server = new ServerSocket(SERVER_PORT);
while (true) {
socket = server.accept();
new DispatchRequestThread(socket).start();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
// Release the resources opened
}
}
class DispatchRequestThread extends Thread {
BufferedReader in;
PrintWriter out;
Socket socket;
public DispatchRequestThread(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try {
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);
while (true) {
String str = in.readLine();
System.out.println(socket.getPort() + ": " + str);
out.println("Received: " + str);
if (str.equals("end"))
break;
}
} catch (IOException e) {
e.printStackTrace();
} finally {
// Release the resources opened
}
}
}
public static void main(String[] args) {
new MyMultiClientsServer();
}
}
开启服务端后,开启多个服务端进行测试, 结果如下:
3014: hello
3015: signature
3014:end
分享到:
相关推荐
https://blog.csdn.net/qq_29542611/article/details/86371353 MFC:Socket编程—TCP服务端和多个客户端通信 示例代码
Linux下基于UDP的socket编程,适用多客户端之间,服务器与客户端之间的通信。客户端和服务端代码分开了。notepad++可打开
c#语言开发多线程socket服务器端程序,实现一个服务器同时与多个客户端连接对话。
"华科-计算机网络实验报告-Java_Socket编程-网络组建实验.docx" 这份实验报告主要涵盖了计算机网络实验的两个部分:Socket 编程和网络组建实验。下面是对这两部分的详细解释和知识点总结: Socket 编程 Socket ...
Java Socket 编程有很多优点,例如: * 跨平台性:Java Socket 编程可以在不同的操作系统上运行,如 Windows、Linux、Mac OS 等。 * 高度灵活性:Java Socket 编程可以实现多种网络协议,例如 TCP/IP、UDP 等。 * ...
这是两个简单的socket与线程的小例子,一个是单个客户端向服务端发送图片,另外一个是多个客户端向服务端发送图片,例子都是.java文件,复制到eclipse中便可以直接使用的,对于刚刚接触线程与socket网络编程的人,...
实现客户端和服务器之间简单的通信。过程较简单,实现的协议也不多。 socket编程就是服务器辨别客户端的一个插口。
工具包括服务器端和客户端; 具备用户注册、登录、找回密码功能(基于TCP协议); 两个用户如果同时在线,采用点到点通信方式进行聊天,信息不需要通过服务器中转,服务器也不保存(基于TCP协议); 支持离线消息...
实现一个服务器对多个客户端的关键是,在服务端的使用集合CPtrList类用保存客户端的socket对象,思想与Java中的编程思想一样,只不过Java中会使用多线程技术,在Vector集合保存客户端的socket对象,而MFC框架提供了...
1.基于MFC通过多线程实现多个客户端同时连接服务器。 2.服务端通过维护一张转发表来实现对客户端信息的转发,比如客户端A向客户端B发送消息,服务器接收到客户端A发过来消息内容和客户端B信息之后,通过转发表查找到...
带有用户界面,基于socket编程,一个服务器可以跟多个客户端互发信息,提供全双工服务,内含工程。
多线程实现的一对多编程,使用Linux下的socket进行编程。
服务器端采用多线程并发模式,服务器可以同时接收多个客户端的请求,并且回复客户端相同的信息。编译时应该使用命令“gcc server.c -o server -lpthread ”和“gcc client.c -o client -lpthread”
网上很多有关socket文件传输的源码都是每次只能发送一个文件,如果想传输多个文件,不但需要多次交互,还需要把每个文件的文件名都输入进去,很不方便,所以进行了一个小扩展:即客户端可以将打算传送的多个文件都先...
1.在MFC框架中通过多线程来实现多个客户端同时与服务器建立Socket连接。 2.通过在服务器端维护一张转发表来实现各个客户端之间的通信,比如客户端A要给客户端B发送消息,首先客户端A把消息内容和客户端B的信息发给...
该资源是基于UDP的异步聊天室,一个服务器多个客户端,没有使用多线程