資料的接收與傳送(練習)
阿新 • • 發佈:2019-01-03
傳送方:Demo002Send.java
package com.shsxt.day09.udp;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.InetSocketAddress;
/*
* 傳送方:
* 1、準備一個數據報 傳送工具 DatagramSocket
* 2、準備資料
* 3、準備資料報包 (資料+ 地址(ip+埠號))
* 4、傳送 (使用資料報傳送出資料報包)
* 5、釋放資源
*/
public class Demo002Send {
public static void main(String[] args)throws Exception {
DatagramSocket socket = new DatagramSocket(2626);
//byte[] msg = "hello".getBytes();
// 輸入資料傳送
/*Scanner sc = new Scanner(System.in);
String m = sc.nextLine();
byte[] msg = m.getBytes();*/
// System.in -> 標準輸入流
BufferedReader bis = new BufferedReader(new InputStreamReader(System.in));
byte[] msg = bis.readLine().getBytes();
InetAddress address = InetAddress.getByName("127.0.0.1");
InetSocketAddress socketAddress = new InetSocketAddress(address, 3535 );
DatagramPacket p = new DatagramPacket(msg, msg.length,socketAddress);
socket.send(p);
socket.close();
DatagramSocket socket1 = new DatagramSocket(5454);
byte[] ms = new byte[1024];
DatagramPacket dp = new DatagramPacket(ms,ms.length);
socket1.receive(dp);
int len = dp.getLength();
System.out.println(new String(ms,0,len));
socket1.close();
}
}
接收方:Demo002Receive
package com.shsxt.day09.udp;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.InetSocketAddress;
/*
* 1、準備一個數據報 接收資料的工具 指定自己在哪個埠接收
* 2、準備接收資料的容器
* 3、準備一個空的資料報包
* 4、接收
* 5、釋放資源
*/
public class Demo002Receive {
public static void main(String[] args) throws Exception {
DatagramSocket socket = new DatagramSocket(3535);
byte[] msg = new byte[1024];
DatagramPacket packet = new DatagramPacket(msg,msg.length);
// 阻塞在此等待資料
socket.receive(packet);
int len = packet.getLength();
String str = new String(msg,0,len);
System.out.println(str);
// 獲取傳送方資訊, 準備回覆資訊
InetAddress address = packet.getAddress();
InetSocketAddress socketAddress = new InetSocketAddress(address, 5454);
String ms = "來自對方回覆:" + str;
DatagramPacket dp = new DatagramPacket(ms.getBytes(),ms.getBytes().length,socketAddress);
socket.send(dp);
socket.close();
}
}