您的位置:首页 > 理论基础 > 计算机网络

java网络编程基础——UDP通信之DatagramSocket

2013-04-15 20:12 721 查看
import java.net.*;
/*
通过UDP传输方式,将文字数据发送出去
①建立udp服务,udp端点。
②提供数据,将数据封装到数据包中
③通过socket服务的发送功能,将数据包发送出去
④关闭资源

*/
class UdpSend
{
public static void main(String[] args) throws Exception
{
// try{
DatagramSocket ds=new DatagramSocket(8888); //此处的端口号为从发送端的主机的8888端口发出
//相当于第一步,可传(端口号),(端口号+InetAddress对象),或者不传参数()

byte[] data="UDP Hellow World Sending Message".getBytes();
DatagramPacket dp=new DatagramPacket(data,data.length,InetAddress.getLocalHost(),10000);
//相当于第二步,此处的10000端口为目的主机的端口为10000

ds.send(dp);
//第三步

ds.close();
// }

}
}
/*----------------------------分隔符-------------------------------------------*/

/*
用于接受udp数据包,
①定义udpsocket服务
②定义一个数据包,因为要存储要接收到的数据
③通过socket服务的receive方法将收到的数据存入定义好的数据包中
④通过数据包对象的特有功能,将这些不同的数据取出,打印在控制台上。
⑤关闭资源
*/
class UdpRece
{
public static void main(String[] args)throws Exception
{
//步骤一建立udp socket,加上端口号,表示要监听哪个端口
DatagramSocket ds=new DatagramSocket(10000 );

//步骤二,定义数据包
byte[] buf=new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,buf.length);

//步骤三,通过服务的receive方法将收到的数据存入数据包中
ds.receive(dp);//dp中的DatagramPacket有数据了!

//步骤四,读取数据包中的数据,那到底该怎么拿呢?查文档
String ip=dp.getAddress().getHostAddress();//发现getAddress返回ip地址的封装类InetAddress,
//再用getHostAddress获得获得发送方的ip地址
String data=new String(dp.getData(),0,dp.getLength()); //getData可获得数据缓冲区,即接受到的数据
//但这是byte[]数组类型,转换!!
int port=dp.getPort(); //获得端口号,即发送方的端口号,不多解释
System.out.println(ip+"::"+data+"::"+port); //打印查看结果吧

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: