需求:
1.UDP發送資料:資料來源于鍵盤錄入,直到輸入的資料是over,發送資料結束
2.UDP接收資料:不知道發送端什么時候停止發送,采用死回圈方式
分析:
發送端:
1.創建發送端DatagramSocket物件
2.使用BufferedReader物件完成封裝鍵盤錄入資料并判斷當資料不是over時正常發送,是over時結束發送
3.創建資料并打包
DatagramPacket(byte[] buf, int length, InetAddress address, int port)構造用于發送長度的分組的資料報包length`指定主機上到指定的埠號
4.呼叫DatagramSocket物件發送資料
5.關閉發送端
接收端:
1.創建接收端的Socket物件(DatagramSocket)要系結指定的埠號
2.創建一個資料包,用于接收資料要注意資料包的長度
3.呼叫DatagramSocket物件的方法接收資料
4.決議資料包,并把資料在控制臺顯示
Demo
send發送端類
package Demo042001;
?
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
?
/*發送端
1.創建發送端DatagramSocket物件
2.使用BufferedReader物件完成封裝鍵盤錄入資料并判斷當資料不是over時正常發送,是over時結束發送
3.創建資料并打包
DatagramPacket(byte[] buf, int length, InetAddress address, int port)` 構造用于發送長度的分組的資料報包 `length`指定主機上到指定的埠號
4.呼叫DatagramSocket物件發送資料
5.關閉發送端
* */
public class SendDemo {
public static void main(String[] args) throws IOException {
//創建發送端DatagramSocket物件
DatagramSocket ds=new DatagramSocket();
//2.使用BufferedReader物件完成封裝鍵盤錄入資料并判斷當資料不是over時正常發送,是over時結束發送
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String line;
while ((line=br.readLine())!=null){
if ("over".equals(line)){
break;
}
//創建資料并打包
//DatagramPacket(byte[] buf, int length, InetAddress address, int port)
// 構造用于發送長度的分組的資料報包 `length`指定主機上到指定的埠號
byte[] bytes=line.getBytes();
DatagramPacket dp=new DatagramPacket(bytes,bytes.length, InetAddress.getByName("cy"),12345);
ds.send(dp);
}
//關閉發送端
ds.close();
?
?
}
}
Recive接收端類
package Demo042001;
?
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
?
/*接收端
1.創建接收端的Socket物件(DatagramSocket)要系結指定的埠號
2.創建一個資料包,用于接收資料要注意資料包的長度
3.呼叫DatagramSocket物件的方法接收資料
4.決議資料包,并把資料在控制臺顯示
?
* */
public class ReciveDemo {
public static void main(String[] args) throws IOException {
//創建接收端的Socket物件(DatagramSocket)要系結指定的埠號
DatagramSocket ds = new DatagramSocket(12345);
while (true) {
//創建一個資料包,用于接收資料要注意資料包的長度
byte[] bytes = new byte[1024];
DatagramPacket dp = new DatagramPacket(bytes,bytes.length);
//呼叫DatagramSocket物件的方法接收資料
ds.receive(dp);
//決議資料包,并把資料在控制臺顯示
System.out.println("資料是:\r\n"+new String(dp.getData(),0,dp.getLength()));
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/459547.html
標籤:其他
上一篇:Java基礎——UDP通信程式
下一篇:Java基礎——TCP通信程式
