UDP 發送與接收數據
阿新 • • 發佈:2017-12-05
java socket udp 網絡編程 udp發送接收 //UDP 發送端
package liu.net.udp;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
public class Send2 {
public static void main(String[] args) throws IOException {
/*UDP 發送步驟
*1. 建立DatagramSocket
*2. 建立 DatagramPacket
*3. 使用 DatagramSocket 的send 方法 發送數據
*4. 關閉 DatagramSocket
*/
//定義發送使用的端口,接收的IP地址
try {
DatagramSocket ds = new DatagramSocket(8899);
String str = "發送給UDP的數據";
byte[] buf = str.getBytes();
InetAddress ip = InetAddress.getByName("127.0.0.1");
DatagramPacket dp = new DatagramPacket(buf,buf.length,ip,8890);
ds.send(dp);
ds.close();
} catch (SocketException e) {
e.printStackTrace();
}
}
}
//UDP 接收端
package liu.net.udp;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class Receive2 {
public static void main(String[] args) throws IOException {
/*UDP接收步驟:
* 使用 DatagramSocket(int port) 建立socket(套間字)服務。(我們註意到此服務即可以接收,又可以發送),port指定監視接受端口。
*定義一個數據包(DatagramPacket),儲存接收到的數據,使用其中的方法提取傳送的內容
*通過DatagramSocket 的receive方法將接受到的數據存入上面定義的包中
*使用DatagramPacket的方法,提取數據。
*關閉資源。
*/
//1.使用 DatagramSocket(int port) 建立socket(套間字)服務。
// (我們註意到此服務即可以接收,又可以發送),port指定監視接受端口。
DatagramSocket ds = new DatagramSocket(8890);
//2.定義一個數據包(DatagramPacket),儲存接收到的數據,使用其中的方法提取傳送的內容
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,0,buf.length);
//3.通過DatagramSocket 的receive方法將接受到的數據存入上面定義的包中
ds.receive(dp);
//4.使用DatagramPacket的方法,提取數據。
//獲取接收的數據。數據報包也包含發送方的 IP 地址和發送方機器上的端口號。
String receiveData = new String(dp.getData(),0,dp.getLength());
String sourceAddress = dp.getAddress().getHostAddress();
int sourcePort = dp.getPort();
System.out.println("原地址:"+sourceAddress+" 發送端端口號:"+sourcePort);
System.out.println("收到的數據內容:"+receiveData);
//5.關閉資源。
ds.close();
}
}
UDP 發送與接收數據