国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java Socket UDP實例詳解

2019-11-26 13:09:42
字體:
來源:轉載
供稿:網(wǎng)友

UDP編程示例

服務器端:

package socket;  import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException;  public class UDPServer {       public static void main(String[] args) throws IOException {     byte[] buf = new byte[1024];     DatagramPacket dp = new DatagramPacket(buf, buf.length);//聲明一個用來接收數(shù)據(jù)的“包裹”     DatagramSocket ds = new DatagramSocket(5678);//指定的是UDP中的端口號5678,在TCP中,還有另外一個端口號為5678的端口     while(true){       ds.receive(dp); //阻塞式的       System.out.println(new String(buf,0,dp.getLength()));//dp中獲取的數(shù)據(jù)的長度     }    }  } 

客戶端:

package socket;  import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; import java.net.SocketException;  public class UDPClient {    public static void main(String[] args) throws IOException {     byte[] buf = new String("Hello").getBytes();     //UDP是無連接的,所以要在發(fā)送的數(shù)據(jù)包裹中指定要發(fā)送到的ip:port     DatagramPacket dp = new DatagramPacket(buf, buf.length, new InetSocketAddress("127.0.0.1", 5678));     DatagramSocket ds = new DatagramSocket(9999); //指明發(fā)送端的端口號     ds.send(dp);     ds.close();   }  } 

說明:

1. 嚴格意義上來講,UDP沒有server和client之分,不像TCP中有ServerSocket和Socket,UDP中只有DatagramSocket。

2. UDP和TCP的端口是分開的,例如UDP有一個端口號為5678的端口,TCP也有一個端口號為5678的端口。

3. UDP是無連接的,所以要在發(fā)送的數(shù)據(jù)包裹中指定要發(fā)送到的ip:port。

4. 如果要發(fā)送long、int等類型的數(shù)據(jù),則需要使用到ByteArrayOutputStream、DataOutputStream、ByteArrayInputStream、ByteArrayInputStream流類型,如下:

服務器端:

package socket;  import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException;  public class UDPServer {       public static void main(String[] args) throws IOException {     byte[] buf = new byte[1024];     DatagramPacket dp = new DatagramPacket(buf, buf.length);     DatagramSocket ds = new DatagramSocket(5678);     ByteArrayInputStream bais = null;     DataInputStream dos = null;     while(true){       ds.receive(dp);        bais = new ByteArrayInputStream(buf);       dos = new DataInputStream(bais);       System.out.println(dos.readLong());     }    }  } 

客戶端:

package socket;  import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; import java.net.SocketException;  public class UDPClient {    public static void main(String[] args) throws IOException {     byte[] buf = null;     long l = 100000L;     ByteArrayOutputStream baos = new ByteArrayOutputStream();     DataOutputStream dos = new DataOutputStream(baos);     dos.writeLong(l);     buf = baos.toByteArray();     DatagramPacket dp = new DatagramPacket(buf, buf.length, new InetSocketAddress("127.0.0.1", 5678));     DatagramSocket ds = new DatagramSocket(9999);      ds.send(dp);     ds.close();         dos.close();   }  } 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 咸阳市| 吉首市| 万山特区| 五指山市| 上蔡县| 崇信县| 黄石市| 怀来县| 铁力市| 彭泽县| 延津县| 天门市| 松溪县| 德江县| 集贤县| 青岛市| 南乐县| 许昌市| 秭归县| 岐山县| 利津县| 温泉县| 秦皇岛市| 寿阳县| 察雅县| 北安市| 泾源县| 都江堰市| 扶绥县| 合肥市| 灵丘县| 伊金霍洛旗| 宜城市| 镇雄县| 饶阳县| 巧家县| 闸北区| 勐海县| 漠河县| 西峡县| 桐乡市|