本文講述的是利用udp做一個簡單的發送與接收。
程式碼1:傳送者-demo2Sender.java
package udp; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException;
在java中網路通訊業稱作為Socket(插座)通訊,要求通訊的兩台器都必須安裝Socket。
不同的協定有不同的插座(Socket)
UDP通訊協定的特性:
1. 將資料極封裝為資料包,面向無連線。
2. 每個封包大小限制在64K中
3.因為無連接,所以不可靠
4. 因為不需要建立連接,所以速度快
5.udp 通訊是不分服務端與客戶端的,只分發送端與接收端。
例如: 物管的對講機, 飛Q聊天、 遊戲...
udp協定下的Socket:
## DatagramSocket(udp插座服務) DatagramPacket(資料包類別) DatagramPacket(buf, length, address, port) 數據內容的大小。 address : 傳送的目的IP位址物件 port : 連接埠號碼。傳送端的使用步驟:
1. 建立udp的服務。
2. 準備數據,將資料封裝到封包中發送。發送端的封包要帶上ip位址與連接埠號碼。 3. 呼叫udp的服務,傳送資料。 4. 關閉資源。/发送端 @SuppressWarnings("unused") public class demo1Sender { public static void main(String[] args) throws IOException { //建立udp的服务 DatagramSocket datagramSocket = new DatagramSocket(); //准备数据,把数据封装到数据包中。 String data = "这个是我第一个udp的例子.."; //创建了一个数据包 DatagramPacket packet = new DatagramPacket(data.getBytes(), data.getBytes().length,InetAddress.getLocalHost() , 9090); //调用udp的服务发送数据包 datagramSocket.send(packet); //关闭资源 ---实际上就是释放占用的端口号 datagramSocket.close(); } }
程式碼2:接收者-demo1Receive.java
package udp;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
接收端的使用步驟
# 1.建立udp的服務
2. 準備空的封包接收資料。 3. 呼叫udp的服務接收資料。 4. 關閉資源public class demo1Receive { public static void main(String[] args) throws IOException { //建立udp的服务 ,并且要监听一个端口。 DatagramSocket socket = new DatagramSocket(9090); //准备空的数据包用于存放数据。 byte[] buf = new byte[1024]; DatagramPacket datagramPacket = new DatagramPacket(buf, buf.length); // 1024 //调用udp的服务接收数据 socket.receive(datagramPacket); //receive是一个阻塞型的方法,没有接收到数据包之前会一直等待。 数据实际上就是存储到了byte的自己数组中了。 System.out.println("接收端接收到的数据:"+ new String(buf,0,datagramPacket.getLength())); // getLength() 获取数据包存储了几个字节。 System.out.println("receive阻塞了我,哈哈"); //关闭资源 socket.close(); } }【建議課程:
Java影片教學
】
以上是java-利用udp做一個簡單的發送與接收的詳細內容。更多資訊請關注PHP中文網其他相關文章!