全国
Java--教育路上

栏目导航

全国站 > Java > 网络编程
需求

Java多线程的 TCP 网络程序

摘要:Java 多线程 TCP 网络程序 ,服务器端为每个客户端创建一个对 应的 Socket,并且开启一个新的线程使两个 Socket 建立专线进行通信。以下是我们为大家整理的,相信大家阅读完后肯定有了自己的选择吧。

标签:
发布时间:
2024-04-27 15:43
信息来源:
网络推荐
浏览次数:
1063
Java多线程的 TCP 网络程序

在例 13-10 和例 13-11 中分则实我了服务器端程序和客户端程序,当一个客户端程序请
求服务器端时,服务器端就会结束阻塞状态,完成程序的运行。实际上,很多服务器端程序
都是允许收多个应用程序访问的。例如门户网站可以被多个用户同时访问,因此服务器都是
多线程的,下面就通过一个图例来表示多个用户访同一个服务器。如图 13-19 所示。
图 13-19 代表的是多个客户端访问同一个服务器端,服务器端为每个客户端创建一个对
应的 Socket,并且开启一个新的线程使两个 Socket 建立专线进行通信,接下来根据图 13-19
所示的通信方式对例 13-11 的服务端程序进行改进,如例 13-12 所示。
例 13-12 Example06.java
import java.io.*;
import java.net.*;
public class Example06 {
public static void main(String[] args) throws Exception {
new TCPServer().listen(); // 创建 TCPServer 对象,并调用 listen()方

}
}
// TCP 服务端
class TCPServer {
private static final int PORT = 7788; // 定义一个静态常量作为端口号
public void listen() throws Exception {
// 创建 ServerSocket 对象,监听指定的端口
ServerSocket serverSocket = new ServerSocket(PORT);
// 使用 while 循环不停的接收客户端发送的请求
while (true) {
// 调用 ServerSocket 的 accept()方法与客户端建立连接
final Socket client = serverSocket.accept();
// 下面的代码用来开启一个新的线程
new Thread() {
public void run() {
OutputStream os; // 定义一个输出流对象
try {
os = client.getOutputStream(); // 获取客户端的输出

System.out.println("开始与客户端交互数据");
os.write(("传智播客欢迎你!").getBytes());
Thread.sleep(5000); // 使线程休眠
5000 毫秒
System.out.println("结束与客户端交互数据");
os.close(); // 关闭输出流
client.close(); // 关闭 Socket 对

} catch (Exception e) {
e.printStackTrace();
}
};
}.start();
}
}
}
例 13-12 中,使用多线程的方式创建了一个服务器端程序。通过在 whlie 循环中调用
accept()方法,不停地接收客户端发送的请求,当与客户端建立连接后,就会开启一个新的
线程,该线程会去处理客户端发送的数据,而主线程仍处于继续等待状态。
为了验证服务器端程序是否实现了多线程,首先运行服务器端程序(例 13-12),之后运行
三个客户端程序<例 13-11),当运行第一个客户端程序时,服务器端马上就进行数据处理,
打印出"开始与客户端交互数据",再运行第二个和第三个客户端程序,会发现服务器端也
立刻做出回应.两个客户端会话结束后分别打印各自结束信息,如图 13-20 所示。这说明通

过多线程的方式,可以实现多个用户对同一个服务器端程序的访问。

from shengerguan



上一篇:
Java简单的 TCP 网络程序
下一篇:
Java TCP 案例-文件上传
相关推荐
最近更新
学校免费发布信息关闭
如有图片请发邮件到:edu63@foxmail.com,审核后显示

 换一张

确认提交
完善补充本文信息关闭
非常感谢您帮助完善补充本文信息


 换一张

确认提交