`

Socket 编程 - 多个客户端

    博客分类:
  • java
阅读更多
在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
分享到:
评论

相关推荐

    C#SuperSocket---客户端源程序

    在IT领域,网络通信是不可或缺的一部分,而C#作为.NET框架下的主要编程语言,提供了丰富的库来支持网络...通过深入学习和实践这个客户端源程序,你将能够掌握SuperSocket的关键概念和技术,从而提升你的网络编程能力。

    实战linux socket编程--示例源码.rar_C++ socket_linux 源码_socket 编程 linux_s

    - 为了处理多个客户端连接,服务器端通常会采用多线程或者异步I/O模型。 - 每个客户端连接可以分配一个独立的线程进行处理,避免阻塞其他连接。 7. **实战示例源码分析** - “www.pudn.com.txt”可能是一个文档...

    WPF-Socket服务端对多个客户端_新

    在本文中,我们将深入探讨如何使用Windows Presentation Foundation (WPF) 实现Socket服务端来处理多个客户端的连接。标题中的“WPF-Socket服务端对多个客户端_新”表明这是一个更新过的版本,解决了之前版本的一些...

    基于TCP的Socket编程服务器和客户端代码

    Java的`java.nio`包提供了非阻塞I/O的支持,可以同时处理多个客户端连接,提高了服务器的并发能力。 总结起来,基于TCP的Socket编程是构建网络应用的基础,涉及网络连接的建立、数据的可靠传输和通信链路的维护。...

    Linux网络编程-网络基础-socket编程-高并发服务器.pdf

    - I/O复用:如select、poll、epoll等机制,允许单个线程监控多个socket,当某个socket准备就绪时才进行读写操作,提高效率。 - 非阻塞I/O:将socket设置为非阻塞模式,避免在等待数据时阻塞其他操作。 - 异步I/O:如...

    安卓XMPP聊天通讯Socket相关-简易微信客户端和服务器源码.rar

    这些源码可作为学习和参考,帮助理解XMPP协议在Android应用程序中的实际应用和Socket编程的细节。 【标签】"XMPP聊天通讯Socket"揭示了该压缩包的主要内容,即使用Socket编程实现基于XMPP的聊天功能。Socket是网络...

    Java TCP-IP Socket编程-卡尔弗特.pdf

    服务器可能需要同时处理多个客户端连接,这时可以使用线程池或者并发处理模型。Java的ExecutorService和Future接口可以方便地管理并发任务。 在实际应用中,Socket编程还常常结合其他技术,如HTTP、HTTPS、FTP等...

    c#多线程socket开发(一个服务器对多个客户端)

    C#语言开发多线程Socket服务器端程序,实现一个服务器同时与多个客户端连接对话。这里,我们将详细讲解如何使用C#语言开发多线程Socket服务器端程序,实现一个服务器同时与多个客户端连接对话。 多线程Socket服务器...

    【Socket编程】--TCP异步通讯一服务器多客户端

    在TCP异步通讯中,服务器并不直接等待每一个客户端的响应,而是采用非阻塞的方式处理多个客户端请求,这样可以提高服务端的并发处理能力,优化系统资源的利用。 首先,让我们来了解TCP服务器的基本构建。一个TCP...

    Socket编程-聊天室.zip

    3. **多线程处理**:在一个聊天室中,服务器需要同时处理多个客户端的连接请求。因此,通常会为每个新连接创建一个新的线程,以保证并发处理能力。每个线程负责处理一个客户端的通信。 4. **数据格式化与解析**:...

    socket编程-聊天小程序

    服务器端会监听特定端口,等待多个客户端的连接,然后通过新的socket与每个客户端进行单独的通信。客户端则需要连接到服务器,发送消息并接收服务器的回应。 源代码中可能包含以下关键部分: 1. 服务器端代码: - ...

    C#使用Socket实现服务器与多个客户端通信(简单的聊天系统)

    在本文中,我们将深入探讨如何使用C#编程语言通过Socket实现一个简单的聊天系统,使得服务器可以与多个客户端进行通信。Socket在计算机网络编程中扮演着重要角色,它提供了进程间通信(IPC)的能力,允许不同计算机...

    MFC:Socket编程—TCP服务端和多个客户端通信 示例代码

    在本文中,我们将深入探讨MFC(Microsoft Foundation Classes)中的Socket编程,特别是如何实现一个TCP服务端与多个客户端之间的通信。MFC是微软提供的一套C++类库,用于简化Windows应用程序开发,其中包括对网络...

    Linux下基于UDP的socket编程,适用多客户端之间,服务器与客户端之间的通信。客户端和服务端

    Linux下基于UDP的socket编程,适用多客户端之间,服务器与客户端之间的通信。客户端和服务端代码分开了。notepad++可打开

    HP用SOCKET实现(客户端---服务端)

    标题:HP用SOCKET实现(客户端---服务端) 描述:HP用SOCKET实现(客户端---服务端)通信 本文将深入解析如何利用PHP中的Socket编程技术实现客户端与服务端之间的通信,通过分析提供的代码示例,我们将理解其工作原理、...

    编程例子-Qt多线程的socket客户端-Qtsocket服务端

    这意味着代码可能展示了如何在一个客户端应用中创建多个并行的socket连接,以便同时处理多个网络请求,这对于处理大量并发连接的网络应用来说至关重要。此外,"socket客户端与socket服务端例子"进一步确认了我们将会...

    华科-计算机网络实验报告-Java_Socket编程-网络组建实验.docx

    "华科-计算机网络实验报告-Java_Socket编程-网络组建实验.docx" 这份实验报告主要涵盖了计算机网络实验的两个部分:Socket 编程和网络组建实验。下面是对这两部分的详细解释和知识点总结: Socket 编程 Socket ...

    c++实现socket:一个服务器对应多个客户端相互传递信息

    标题 "c++实现socket:一个服务器对应多个客户端相互传递信息" 指的是利用C++的socket API创建一个服务器程序,该服务器可以同时处理来自多个客户端的连接请求,并允许这些客户端之间交换数据。这种设计模式通常称为...

    TCPSocket编程客户端和服务端

    例如,服务器可能需要使用线程池或事件驱动模型来并发处理来自多个客户端的请求。 压缩包文件"TCPSocket"可能包含了示例代码,这些代码可以帮助初学者更好地理解TCP Socket编程的实践。通过阅读和运行这些代码,你...

    socket 一个服务器对应多个客户端使用多线程

    在标题"socket 一个服务器对应多个客户端使用多线程"中,提到的是使用Socket编程来设计一个服务器,该服务器能够同时处理来自多个客户端的连接请求,这通常被称为“一对一”或“一对多”模型。在Linux环境下,这种...

Global site tag (gtag.js) - Google Analytics