日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Java Socket笔记-udpSocket简单收发包

發(fā)布時(shí)間:2025/3/15 java 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java Socket笔记-udpSocket简单收发包 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

?

基本概念

代碼與實(shí)例


?

基本概念

這里主要是使用了DatagramSocket可以打開本地端口,構(gòu)建Socket,同時(shí)這個(gè)類還可以給指定IP和端口發(fā)送數(shù)據(jù)包。

如下,打開本地端口并接收數(shù)據(jù):

DatagramSocket ds = new DatagramSocket(2000);//構(gòu)建接收實(shí)體 final byte[] buf = new byte[512]; DatagramPacket receiverPack = new DatagramPacket(buf, buf.length);//接收 ds.receive(receiverPack);

接收到的數(shù)據(jù)會(huì)傳給receiverPack。

同樣如果是發(fā)送

DatagramPacket responsePacket = new DatagramPacket(responseDataBytes, responseDataBytes.length, receiverPack.getAddress(), receiverPack.getPort());ds.send(responsePacket);

通過構(gòu)造DatagramPacket指明IP和端口,就可以發(fā)送數(shù)據(jù)了

?

代碼與實(shí)例

程序運(yùn)行截圖如下:

源碼如下:

UDPProvider.java

import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket;public class UDPProvider {public static void main(String[] args) throws IOException {System.out.println("UDPProvider Started.");//接收者,指定接收數(shù)據(jù)DatagramSocket ds = new DatagramSocket(2000);//構(gòu)建接收實(shí)體final byte[] buf = new byte[512];DatagramPacket receiverPack = new DatagramPacket(buf, buf.length);//接收ds.receive(receiverPack);//打印發(fā)送者信息String ip = receiverPack.getAddress().getHostAddress();int port = receiverPack.getPort();int dataLen = receiverPack.getLength();String data = new String(receiverPack.getData(), 0, dataLen);System.out.println("UDPProvider receive from ip: " + ip + "\tport: " + port + "\tdata: " + data);//構(gòu)建一份回送數(shù)據(jù)String responseData = "Receive data with len: " + dataLen;byte[] responseDataBytes = responseData.getBytes();DatagramPacket responsePacket = new DatagramPacket(responseDataBytes,responseDataBytes.length,receiverPack.getAddress(),receiverPack.getPort());ds.send(responsePacket);System.out.println("UDPProvider Finished!");ds.close();} }

UDPSearcher.java

import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress;public class UDPSearcher {public static void main(String[] args) throws IOException {System.out.println("UDPSearcher Started.");//搜索方自動(dòng)分配端口DatagramSocket ds = new DatagramSocket();//構(gòu)建一份回送數(shù)據(jù)String requestData = "Hello World";byte[] requestDataBytes = requestData.getBytes();//根據(jù)發(fā)送者構(gòu)造一份回送信息DatagramPacket requestPacket = new DatagramPacket(requestDataBytes, requestDataBytes.length);//本機(jī)2000端口requestPacket.setAddress(InetAddress.getLocalHost());requestPacket.setPort(2000);ds.send(requestPacket);//構(gòu)建接收實(shí)體final byte[] buf = new byte[512];DatagramPacket receiverPack = new DatagramPacket(buf, buf.length);//接收ds.receive(receiverPack);//打印發(fā)送者信息String ip = receiverPack.getAddress().getHostAddress();int port = receiverPack.getPort();int dataLen = receiverPack.getLength();String data = new String(receiverPack.getData(), 0, dataLen);System.out.println("UDPSearcher receive from ip: " + ip + "\tport: " + port + "\tdata: " + data);System.out.println("UDPSearcher Finished!");ds.close();} }

?

總結(jié)

以上是生活随笔為你收集整理的Java Socket笔记-udpSocket简单收发包的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。