Java Socket笔记-udpSocket简单收发包
生活随笔
收集整理的這篇文章主要介紹了
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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis工作笔记-Jedis的基本使用
- 下一篇: Java笔记-jpa中数据存储及更新应该