遇到這個問題,還告訴別人錯了,這里來Mark一下。
receive()方法會使調用線程阻塞。
Java使用DatagramSocket代表UDP協議的Socket,DatagramSocket本身只是碼頭,不維護狀態,不能產生IO流,它的唯一作用就是接收和發送數據報,Java使用DatagramPacket來代表數據報,DatagramSocket接收和發送的數據都是通過DatagramPacket對象完成的。
在接收數據前,通常需要生成一個DatagramPacket對象,給出數據字節數組及其長度。然后調用DatagramSocket的receive()方法等待數據報的到來,該方法會一直阻塞調用該方法的線程,直到收到一個數據報為止。
示例代碼:
// 創建一個接收數據的DatagramPacket對象 DatagramPacket data_packet=new DatagramPacket(buf, 1024); // 接收數據報 socket.receive(data_packet);