多线程网络编程

多线程网络编程简介
在客户端,可以把处理服务器端响应消息的任务放到一个单独线程中,在主线程中接收用户输入和发送请求消息。
服务器的作用就是为了服务多个客户端,对于多个客户端并发请求的处理,在网络编程中,采用多线程处理方式解决。每当服务器端接收到客户端请求后,产生一个新的线程处理客户端请求。
开启线程比较消耗系统资源,所以应用程序中可以开辟的线程个数总是有限的。
可以结合使用线程池技术,实现服务器端的并发处理请求。

单服务器端多线程接收多次通讯
SocketServer建立后,通过accept来等待client连接
Client连接Server端
Server开启一个新的线程来去处理
Server端建立inputstream和outputstream
Client端建立inputstream和outputstream
Client关闭
Server端等待下次连接

UDP网络编程简介
建立网络连接时,有两种传输层协议(TCP传输协议和UDP传输协议)。
UDP传输协议:一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

UDP传输协议通过数据包方式向服务器发送数据,那么在数据包中肯定需要包含服务器的IP信息、端口信息等内容。因此,UDP网络编程必须提供以下对象来完成不同的任务:
网络两端接收消息或发送消息的对象(监听本机端口、发送消息、接收消息)。
数据包对象(包含目的地IP和端口信息、数据报文信息)。

DatagramSocket类:客户端/服务器端网络Socket端口对象。
构造方法:
DatagramSocket();   // 创建一个空的Socket对象
DatagramSocket(int  port);  // 创建指定监听端口的Socket对象
常用方法:
void  send(DatagramPacket  p);  // 发送数据报文
void  receive(DatagramPacket  p);  // 接收数据报文

DatagramPacket类:数据报文对象。
构造方法:
DatagramPacket(byte[]  buf, int len);  // 用空数组创建对象,用来接收数据。
DatagramPacket(byte[] buf, int offset, int len);  // 接收数据的特定部分。
DatagramPacket(byte[] buf, int len, InetAddress addr, int port);  // 包含数据的数组创建对象,用来发送数据,同时指明数据目的地和目标端口号。
DatagramPacket(byte[] buf, int offset, int len, InetAddress addr, int port);  // 发送数据的指定部分。

客户端程序:
基本工作流程:
创建DatagramSocket对象
封装请求数据,创建DatagramPacket对象
发送请求

服务器程序:
基本工作流程:
创建DatagramSocket对象,监听特定端口
创建DatagramPacket对象(空缓冲区)
接收客户端请求
封装服务器响应数据,创建DatagramPacket对象
发送服务器响应给指定客户端

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值