上一篇实现了简单的Client/Server模型的Socket程序。但一般情况下Client会有多个,Server就需要响应多个Client的请求,下面的程序通过多线程实现了这个要求。
package test;
import java.io.*;
import java.net.*;
public class MultiServer {
public MultiServer() throws IOException {
ServerSocket ss=new ServerSocket(7777);
while(true){
Socket socket=ss.accept();
new DealMessage(socket).start();
}
}
public static void main(String[] args) {
try {
new MultiServer();
} catch (IOException e) {
e.printStackTrace();
}
}
}
class DealMessage extends Thread {
private Socket socket;
private InputStream in;
private OutputStream out;
public DealMessage(Socket s) throws IOException {
this.socket = s;
this.in = socket.getInputStream();
this.out = socket.getOutputStream();
}
public void run() {
try {
BufferedReader br = new BufferedReader(new InputStreamReader(in));
System.out.println("you IP is: " + socket.getInetAddress()+":"+socket.getPort());
System.out.println("you enter is: " + br.readLine());
} catch (IOException e) {
e.printStackTrace();
}
}
public void finalize() throws IOException {
if (in != null) {
in.close();
}
if (out != null) {
out.close();
}
}
}
分享到:
相关推荐
使用C#语言开发多线程Socket服务器端程序可以实现一个服务器同时与多个客户端连接对话,提高了服务器的处理能力和响应速度。同时,该程序也可以实现服务器端的负载均衡和failover机制,以便提高服务器的可用性和可靠...
TCP Socket连接的建立遵循三次握手的过程,客户端首先发起连接请求(SYN),服务器响应确认并发送自己的SYN(SYN+ACK),客户端再回应服务器的确认(ACK)。当这三步交互完成,连接便建立成功。而断线后的重连机制,...
在本文中,我们将深入探讨如何使用C#编程语言通过Socket实现一个简单的聊天系统,使得服务器可以与多个客户端进行通信。Socket在计算机网络编程中扮演着重要角色,它提供了进程间通信(IPC)的能力,允许不同计算机...
描述中的"一个socket对应多个client,每个socket开启一个新的线程"表明服务器会为每个新的客户端连接创建一个新的socket实例,并且在一个单独的线程中运行,这样就可以避免因一个客户端的阻塞操作(如等待输入)而...
本主题将深入探讨“网络编程socket-server-多个client”,重点在于如何处理多个客户端连接,利用Linux操作系统和C语言进行高效的服务器设计。在此过程中,我们将特别关注`select`多路复用技术,以及如何在用户空间中...
- **客户端**:发起通信请求的一方,通常负责数据的发送,等待服务器响应。 - **服务器端**:等待并响应客户端请求的一方,通常持续监听特定端口,一旦有连接请求,就创建Socket与客户端建立连接。 4. **Socket...
- 可能还包括多线程或异步处理,以处理多个并发客户端 总的来说,C# Socket编程为我们提供了一种强大的工具来构建网络通信应用。无论是简单的聊天室还是复杂的分布式系统,理解如何创建和管理Socket,以及如何在...
接收数据则通常通过BeginReceive或ReceiveFrom异步方法实现,因为UDP是多播或广播的,可能会接收到多个源的响应。 最后,我们来看看Socket。Socket是.NET框架中最底层的网络通信接口,它可以用于TCP和UDP协议,甚至...
因为如果只有一个线程处理所有连接,那么当并发连接数量增加时,服务器性能会急剧下降,甚至可能导致服务器响应缓慢或无法处理新的连接。因此,通常我们会使用多线程来为每个连接创建一个独立的工作线程,让每个线程...
总的来说,"socket server client select模型"是网络编程中的基础实践,通过这种方式,开发者可以构建出能够处理多个并发连接的服务器,从而提升服务的效率和可用性。通过对`server.cpp`和`client.cpp`代码的学习,...
在IT行业中,Socket编程是网络通信的基础,它允许两个或多个应用通过TCP/IP协议进行双向通信。下面将详细介绍这些知识点。 1. **Socket编程**:Socket是操作系统提供的一种接口,它允许应用程序通过网络发送和接收...
在这个"HP-Socket开发TCP Client"的例子中,我们将深入探讨如何使用HP-Socket库来创建一个简单的TCP客户端。 首先,我们需要理解TCP(传输控制协议)的基本概念。TCP是一种面向连接的、可靠的、基于字节流的传输层...
在本文中,我们将深入探讨如何使用VC++中的Socket编程实现一个简单的聊天室系统,其中包含一个服务器端和多个客户端。Socket编程是网络通信的核心技术,它允许不同计算机间的进程进行数据交换。在Windows环境中,...
这种设计使得客户端可以同时接收和处理多个服务器响应,提高了效率。 3. **MainClient.java**:这是整个客户端程序的入口点,负责初始化Socket连接,创建并启动输入和输出线程。在`MainClient.java`中,可能包含了...
在Python编程中,实现服务器(Server)与多个客户端(Client)之间的通信是常见的网络编程任务。这个场景通常涉及网络协议,如TCP/IP或UDP,以及多线程或多进程技术来处理来自不同客户端的并发请求。在这个项目中,...
SocketClient是一个基于MFC(Microsoft Foundation Classes)框架开发的简单聊天程序,利用了异步套接字技术来实现通信功能。在计算机网络编程中,Socket是应用层与TCP/IP协议族通信的接口,它允许应用程序通过网络...
通过链表,服务器可以高效地管理多个客户端连接,而Socket则提供了底层的通信机制。改端口可以根据实际需求调整服务器的监听端口,确保服务的正常运行。理解并掌握这部分知识对于进行网络编程和开发分布式应用至关...
- **并发处理**:如果服务器需要同时处理多个客户端,需要了解多线程或多进程编程。 - **套接字选项**:如设置超时、禁用Nagle算法等,可以优化通信性能。 总之,"socket-server&client; 初学者版本"是一个很好的...
在实际的代码实现中,`Client`和`Server`可能会使用循环来处理多条消息,或者使用多线程或多进程来同时处理多个客户端的请求。为了调试和测试,通常会将服务器和客户端放在同一台机器上运行,但在实际应用中,它们...
本示例"socketDemo"旨在展示如何创建一个基本的Socket服务器(socketServer01)来处理多个客户端(socketClient02)的连接,以及客户端之间如何通过服务器进行间接通信。 首先,让我们了解Socket的基本概念。Socket...