「javaudp应用」Javaudp
今天给各位分享javaudp应用的知识,其中也会对Javaudp进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
TCP和UDP通信有什么区别 如何分别用java实现?
TCP是面向连接,UDP面向非连接,资料不复制,在这里简单说下:\x0d\x0aTCP建立连接时需要传说的三次握手,服务端与客户端需要确认对方身份而已,建立好连接后,就开始传递消息,直到有一方断开连接位置。 就好比两个人打电话,要先通了才能说话。\x0d\x0aUDP只是数据报发送,它的优点速度快,并非要向TCP那样麻烦建立,它只负责将信息发出,但是并不确保信息的准确完整性等,就好比发短信,短信是出去了,但是中间是否有问题,是否对方手机能收到就不管了。\x0d\x0a在java中想要实现上述两种协议通信,可采用socket建立连接,socket可以理解为码头,其实是套接字,这里简单说下,就好比两个城市运输货物,通过码头走货一样。至于如何通过socket建立两个连接,网上资料多的是,在这里不复制例子了。
Java如何实现UDP自动回复
发送步骤:
使用 DatagramSocket(int port) 建立socket(套间字)服务。
将数据打包到DatagramPacket中去
通过socket服务发送 (send()方法)
关闭资源
import java.io.IOException; import java.net.*; public class Send { public static void main(String[] args) { DatagramSocket ds = null; //建立套间字udpsocket服务 try { ds = new DatagramSocket(8999); //实例化套间字,指定自己的port } catch (SocketException e) { System.out.println("Cannot open port!"); System.exit(1); } byte[] buf= "Hello, I am sender!".getBytes(); //数据 InetAddress destination = null ; try { destination = InetAddress.getByName("192.168.1.5"); //需要发送的地址 } catch (UnknownHostException e) { System.out.println("Cannot open findhost!"); System.exit(1); } DatagramPacket dp = new DatagramPacket(buf, buf.length, destination , 10000); //打包到DatagramPacket类型中(DatagramSocket的send()方法接受此类,注意10000是接受地址的端口,不同于自己的端口!) try { ds.send(dp); //发送数据 } catch (IOException e) { } ds.close(); } }
接收步骤:
使用 DatagramSocket(int port) 建立socket(套间字)服务。(我们注意到此服务即可以接收,又可以发送),port指定监视接受端口。
定义一个数据包(DatagramPacket),储存接收到的数据,使用其中的方法提取传送的内容
通过DatagramSocket 的receive方法将接受到的数据存入上面定义的包中
使用DatagramPacket的方法,提取数据。
请教大神,怎么使用java实现UDP端口扫描
给你个UDP服务端与客户端的示例:
服务端代码:
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
public class UDPMulticastServer {
final static int RECEIVE_LENGTH = 1024;
static String multicastHost = "224.0.0.1";
static int localPort = 9998;
public static void main(String[] args) throws Exception {
InetAddress receiveAddress = InetAddress.getByName(multicastHost);
if (!receiveAddress.isMulticastAddress()) {// 测试是否为多播地址
throw new Exception("请使用多播地址");
}
int port = localPort;
MulticastSocket receiveMulticast = new MulticastSocket(port);
receiveMulticast.joinGroup(receiveAddress);
boolean isStop = false;
while(!isStop){
DatagramPacket dp = new DatagramPacket(new byte[RECEIVE_LENGTH], RECEIVE_LENGTH);
receiveMulticast.receive(dp);
String data = new String(dp.getData()).trim();
System.out.println(data);
if("exit".equals(data)){
System.out.println("程序退出");
isStop = true;
}
}
receiveMulticast.close();
}
}
客户端代码:
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
public class UDPMulticastClient {
static String destAddressStr = "224.0.0.1";
static int destPortInt = 9998;
static int TTLTime = 4;
public static void main(String[] args) throws Exception {
InetAddress destAddress = InetAddress.getByName(destAddressStr);
if(!destAddress.isMulticastAddress()){//检测该地址是否是多播地址
throw new Exception("地址不是多播地址");
}
int destPort = destPortInt;
MulticastSocket multiSocket =new MulticastSocket();
// int TTL = TTLTime;
// multiSocket.setTimeToLive(TTL);
byte[] sendMSG = "exit".getBytes();
DatagramPacket dp = new DatagramPacket(sendMSG, sendMSG.length, destAddress , destPort);
multiSocket.send(dp);
multiSocket.close();
}
}
关于javaudp应用和Javaudp的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-11-26,除非注明,否则均为
原创文章,转载请注明出处。