浅谈Udp的分布式编程,初学java者适用

mihaisheng 2006-02-04 07:46:21
浅谈eclipse下Udp的分布式编程
Udp是一种面向无连接的通信协议,该协议使得数据传输的速度得到大幅度的提高。以下这个实例采用了udp协议的方式完成客户端向服务器端发送数据的这样一个简单的过程。在客户端与服务器端传输的数据被封装在一个叫做数据报的对象当中—DatagramPacket,数据报确定了需要发送的数据以及发送的去向。
首先需要了解客户端的流程:
1、创建DatagramSocket对象,DatagramSocket区别于Tcp方式下的socket对象。
DatagramSocket s=new DatagramSocket();

2、定义一个字符串类型的变量,用于确定需要发送的数据。
String sndmsg; sndmsg=new String("hi i am client,are you server?");

3、将上述字符串类型的数据通过特定的方法转化为DatagramPacket类型的数据。
byte[] buf=new byte[sndmsg.length()+1];
sndmsg.getBytes(0,sndmsg.length(),buf,0);
snddata=new DatagramPacket(buf,buf.length,hostaddress,2006);
hostaddress为远程服务器名称,类型为InetAddress,2006表示服务器上的端口号

4、利用DatagramSocket对象来发送建立好的DatagramPacket数据报。
s.send(snddata);

5、在此过程中,不要忘记对异常进行处理。
比如,SocketException、IOException、UnkownException。

接下来为服务器端的工作流程:
1、首先也需要建立一个socket对象,并且连接到本机的某一个端口:
DatagramSocket socket;
socket=new DatagramSocket(2006)

2、定义DatagramPacket类型的对象,在此,其用途为保存从客户端发送来的数据
byte[] buf=new byte[1000];
DatagramPacket dp=new DatagramPacket(buf,buf.length);

3、socket的receive方法用于等待客户端数据的到来,而一直处于挂起状态。但仅调用一次receive方法只能接收一个数据报,因而可以将receive放入一个循环中,不断接收来自于对方的数据报

4、将接收来的数据报转化为字符串形式,以便于显示结果
getmsg=new String(dp.getData(),0,dp.getLength());

以下为完整的源程序:
省略
...全文
189 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

58,453

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧