天天看點

網絡程式設計_UDP協定發送和接收資料代碼優化

package cn.itcast_03;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

/*
 * 多次啟動接收端:
 *     Unrecognized Windows Sockets error: 0: Cannot bind
 *     端口被占用。
 */
public class ReceiveDemo {
  public static void main(String[] args) throws IOException {
    // 建立接收端Socket對象
    DatagramSocket ds = new DatagramSocket(12345);

    // 建立接收資料包對象
    byte[] bys = new byte[1024];
    DatagramPacket dp = new DatagramPacket(bys, bys.length);

    // 接收資料包
    ds.receive(dp);

    // 解析資料,并顯示在控制台
    String ip = dp.getAddress().getHostAddress();
    String s = new String(dp.getData(), 0, dp.getLength());
    System.out.println("from" + ip + " data is:" + s);

    // 釋放資源
    ds.close();
  }
}      
package cn.itcast_03;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class SedDemo {
  public static void main(String[] args) throws IOException {
    // 建立發送端Socket對象
    DatagramSocket ds = new DatagramSocket();

    // 建立資料,并打包
    byte[] bys = "helloworld".getBytes();
    DatagramPacket dp = new DatagramPacket(bys, bys.length,
        InetAddress.getByName("192.168.31.165"), 12345);

    // 發送資料
    ds.send(dp);

    // 釋放資源
    ds.close();

  }
}