本帖最后由 何拴绪 于 2012-5-26 19:58 编辑
- //发送端
- class UDPSend
- {
- public static void main(String[] args) throws Exception
- {
- //创建udp服务。通过DatagramSocket对象
- DatagramSocket ds = new DatagramSocket(9999);//指定端口号发送数据,若不指定系统随机分配。
- //确定数据,并封装成数据包 DatagramPacket(byte[] buf,int length,SocketAddress address,int port)
- byte[] buf = "udp data packet send ....".getBytes();
- DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("localhost"),8888);
- // 发送数据
- ds.send(dp);
- //关闭资源
- ds.close();
- }
- }
复制代码- //接收端
- class UDPReceive
- {
- public static void main(String[] args) throws Exception{
- DatagramSocket ds = new DatagramSocket(8888);// 创建数据报套接字并将其绑定到本地主机上的指定端口。
- while(true) {
- byte[] buf = new byte[1024];
- DatagramPacket dp = new DatagramPacket(buf,buf.length);
- ds.receive(dp);
- String ip = dp.getAddress().getHostAddress();
- String data = new String(dp.getData(),0,dp.getLength());//将获取的字节数组数据封装为字符串
- int port = dp.getPort();//
- System.out.println(ip+"-->"+data+"-->"+port);
- }
- }
- }
复制代码 问题:发送端绑定的端口号和接收端的端口号为什么不能一样?(如果一样提示windows 端口错误)发送端的端口号和发送数据包时指定端口号为什么又不能是同一个端口?
|
|