教育路上

全国站>Java>网络编程>Java多线程的 TCP 网络程序
学员需求

Java多线程的 TCP 网络程序

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

2022-05-18 16:39网络推荐

发布时间:
2022-05-18 16:39
信息来源:
网络推荐
浏览次数:
1064
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 案例-文件上传
标签:
网友评论
发布评论

访客的评论 2024/04/28 07:29

文中描述的是准确的吗,如何报名!

相关推荐
我也来发表评价关闭
我对该内容的评价:
0
评价500
验证码: 看不清 换一张
提交 (匿名发布,无须担心别人知道您的身份)
学校免费发布信息关闭
我们审核后会尽快展示,如有图片请发邮件到:edu63@foxmail.com

姓      名:

内      容:

手机号码:

验  证  码:  换一张

确认提交
填写需求信息关闭
我们会根据您的需求匹配并审核留言

姓      名:

意向城市:

留      言:

手机号码:

验  证  码:  换一张

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


 换一张

确认提交