//服务器
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
public class ThreadServer extends Thread {
private Socket server;
private BufferedReader reader;
private PrintWriter writer;
public ThreadServer(Socket socket) throws IOException {
server = socket;
reader = new BufferedReader(new InputStreamReader(
server.getInputStream()));
writer = new PrintWriter(new OutputStreamWriter(
server.getOutputStream()));
start();
}
public void run() {
try {
while (true) {
String str = reader.readLine();
if (str.equals("END"))
break;
System.out.println("Echoing:" + str);
writer.println(str);
}
} catch (IOException e) {
} finally {
try {
server.close();
} catch (IOException e) {
}
}
}
}
//客户端
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
public class ThreadClient extends Thread {
private Socket client;
private BufferedReader reader;
private PrintWriter writer;
private static int counter = 0;
private int id = counter++;
private static int threadcount = 0;
public static int getThreadCount() {
return threadcount;
}
public ThreadClient(InetAddress address){
System.out.println("Making client" + id);
threadcount ++;
try{
client = new Socket(address,MultiJobServer.PORT);
}catch (IOException e) {
}
try {
reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
writer = new PrintWriter(new OutputStreamWriter(client.getOutputStream()),true);
start();
} catch (IOException e) {
try {
client.close();
} catch (IOException e2) {
}
}
}
public void run(){
try {
for(int i = 0 ; i < 25 ; i ++){
writer.println("Client " + id + ":" + i);
String str = reader.readLine();
System.out.println(str);
}
writer.println("END");
} catch (Exception e) {
}finally{
try {
client.close();
} catch (IOException e) {
}
threadcount --;
}
}
}
分享到:
相关推荐
总之,Java多线程Socket聊天程序是学习网络编程和并发处理的好例子。它展示了如何使用Java的Socket API建立网络连接,以及如何通过多线程技术处理并发的客户端请求。通过理解和实践这样的项目,开发者可以深入理解...
Java多线程Socket实现是网络编程中的重要概念,它结合了Java的并发处理能力和Socket通信技术,用于构建高效、可扩展的网络应用。Socket在计算机网络中起到桥梁的作用,允许两个远程应用程序通过TCP/IP进行数据交换。...
基于多线程实现的JavaSocket客户端-服务端点对点异步通信程序代码
在Java编程领域,多线程和Socket通信是两个重要的概念,...总之,这个基于Java的多线程Socket聊天室源代码是学习网络编程和并发处理的好例子,它展示了如何使用Java的基本工具来创建一个基本但功能完整的网络应用程序。
在这个"多线程和socket例子"中,我们将深入探讨这两个概念以及它们如何协同工作以实现客户端与服务器端之间的通信。 首先,让我们来了解多线程。在计算机程序中,一个线程是程序执行的一个单一顺序控制流程。在单...
在实际开发中,使用Python、Java、C++等编程语言都可以实现Socket和多线程的结合。例如,Python的socket模块提供了创建和操作Socket的函数,而threading模块则支持多线程编程。对于初学者来说,这个例子提供了一个很...
下面通过开发一个多用户在线聊天室的例子,来具体分析Java多线程在网络编程中的应用。 ##### 客户/服务器(C/S)结构 在这个聊天室应用中,采用了经典的客户端/服务器架构。服务器端负责处理用户的登录认证、消息...
这个文件可能演示了如何在多线程环境下安全地访问共享资源,防止数据不一致性。 接下来,我们讨论“Socket”(套接字)。Socket是网络编程中的重要概念,它为两台计算机之间的通信提供了一个端点。在Java中,Socket...
7. **多线程处理**: - 当服务器需要同时处理多个客户端连接时,通常需要为每个连接创建一个新的线程。这样,服务器可以在处理一个客户端的同时接受其他客户端的连接请求。 8. **示例代码**: - 一个简单的服务器...
在这个例子中,我们将深入理解如何在Java中实现TCP网络编程,以及如何利用多线程来处理并发连接。 首先,TCP网络编程涉及到客户端和服务器端的交互。在Java中,我们可以使用`java.net.Socket`类来创建客户端连接,`...
对于"Java Socket多线程实例",可能是更复杂的多线程Socket应用案例,可能涵盖了更丰富的功能,例如线程池管理、心跳检测、超时处理等高级话题。 六、结论 Java Socket与多线程的结合是构建高效网络服务器的关键...
Java Socket是Java编程...总结来说,这个Java Socket例子展示了如何在Java中创建基本的客户端-服务器通信,特别是在处理中文数据时进行了优化。通过理解Socket的工作原理,我们可以构建出稳定、高效的网络应用程序。
3. **客户端线程**:客户端也可以使用多线程,例如在一个线程中处理用户交互,另一个线程负责通过Socket发送和接收数据。 **文件传输示例** 在`java文件传输.rar`中,可能包含了使用Socket进行文件传输的示例。...
"多线程Socket阻塞模式下通信的例子.rar"可能包含如何在Java或C#中实现多线程处理Socket通信的代码。 6. **Socket应用实例**: - "socket应用小例程.rar"和"Socket开发资料.rar"可能包含了各种Socket编程的实用...
本文将深入探讨`ServerSocket`在单线程和多线程环境下的应用,以及它们各自的特点和适用场景。 首先,我们来看`ServerSocket`的单线程例子。在单线程模式下,服务器只有一个线程来处理所有客户端的连接请求。这通常...
多线程Java Socket编程示例展示了如何在服务器端利用线程池处理多个并发客户端请求。在这个例子中,`sterning.MultiThreadServer` 类创建了一个监听特定端口(默认为8821)的服务器,并使用`ExecutorService`来管理...
首先,Java例子大全涵盖了基础语法、面向对象编程、异常处理、IO流、多线程、网络编程、集合框架、数据库操作等多个关键领域。基础语法包括变量声明、数据类型、运算符、流程控制语句(如if、for、while等)等,这些...
这个简单的例子展示了Java Socket基本的发送和接收机制,但实际的网络应用可能会更复杂,包括多线程处理多个客户端、错误处理、数据编码和解码等。 总结来说,Java Socket编程是构建网络应用程序的关键技术,它允许...
本例包含服务器端和客户端,多线程,每线程多次发送,Eclipse工程,启动服务器使用 nu.javafaq.server.NioServer,启动客户端使用 nu.javafaq.client.NioClient。另本例取自javafaq.nv上的程序修改而成
使用NIO socket不需要多线程来处理多个连接的请求,效率非常高 可以作为NIO socket入门的例子,Reactor模式,重点理解key.attach, jar文件里包含了源代码 1,运行server.bat启动服务器,可以打开编辑,修改端口号 ...