Java网络编程(三)
发布日期:2021-04-30 21:05:35 浏览次数:104 分类:精选文章

本文共 5683 字,大约阅读时间需要 18 分钟。

????3

??UDP????

UDP?????????????????????????????????????????????????????????UDP??????

  • ???
    • ?????TCP???UDP??????????????????
    • ???????????????????????????????
  • ???
    • ????????????
    • ?????????????????????????
  • ???
    • ???????????????????????
    • ??????????????????

????UDP?????????

?Java??????UDP??????????java.net???DatagramPacket????????????

1. ?????DatagramPacket

DatagramPacket?????????????????

  • ?????
    • DatagramPacket(byte[] buf, int length)??????length?????
    • DatagramPacket(byte[] buf, int length, InetAddress address, int port)???????????????
  • ?????
    • void send(DatagramPacket p)????????
    • void receive(DatagramPacket p)????????
    • void close()??????????
2. ??????DatagramSocket

DatagramSocket????????????????????

  • DatagramSocket()????????????????
  • DatagramSocket(int port)?????????
  • close()??????????

??????

?????UDP???Java?????

1. ???UDP???
package com.wangxing.test1;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.Scanner;
public class UDPClient {
public static void main(String[] args) throws Exception {
Scanner input = new Scanner(System.in);
System.out.println("???????????");
String info = input.nextLine();
byte[] sbyte = info.getBytes();
DatagramPacket sPacket = new DatagramPacket(sbyte, sbyte.length, InetAddress.getLocalHost(), 3000);
DatagramSocket client = new DatagramSocket();
client.send(sPacket);
client.close();
}
}
2. ???UDP???
package com.wangxing.test1;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class UDPServer {
public static void main(String[] args) throws Exception {
byte[] buf = new byte[1024];
DatagramPacket sPacket = new DatagramPacket(buf, buf.length);
DatagramSocket server = new DatagramSocket(3000);
server.receive(sPacket);
byte[] data = sPacket.getData();
int len = sPacket.getLength();
String info = new String(data, 0, len);
System.out.println("????????" + sPacket.getAddress().getHostAddress() + ":" + sPacket.getPort() + "????????" + info);
server.close();
}
}
3. ???UDP???????
package com.wangxing.test4;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.util.Scanner;
public class UDPClient4 {
public static void main(String[] args) throws Exception {
Scanner input = new Scanner(System.in);
DatagramSocket server = new DatagramSocket();
byte[] sbyte = new byte[1024];
DatagramPacket spack = new DatagramPacket(sbyte, sbyte.length);
boolean flag = true;
while (flag) {
System.out.println("??????????");
String info = input.nextLine();
byte[] fbyte = info.getBytes();
DatagramPacket fpack = new DatagramPacket(fbyte, fbyte.length, InetAddress.getLocalHost(), 3000);
server.send(fpack);
if (info.equals("886")) {
flag = false;
System.out.println("??????");
} else {
server.receive(spack);
byte data[] = spack.getData();
int len = spack.getLength();
String msg = new String(data, 0, len);
System.out.println("?????????????" + msg);
}
}
try {
server.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("??????");
}
}
// ??????
class ClientThread4 extends Thread {
private DatagramSocket server;
private DatagramPacket datagramPacket;
private boolean falg = true;
public ClientThread4(DatagramSocket server, DatagramPacket datagramPacket) {
this.server = server;
this.datagramPacket = datagramPacket;
}
@Override
public void run() {
try {
while (falg) {
byte data[] = datagramPacket.getData();
int len = datagramPacket.getLength();
String info = new String(data, 0, len);
System.out.println("???????????" + info);
if (info.equals("886")) {
falg = false;
System.out.println("?????");
} else {
info = "server?" + info;
byte fbyte[] = info.getBytes();
DatagramPacket fPacket = new DatagramPacket(fbyte, fbyte.length, datagramPacket.getAddress(), datagramPacket.getPort());
server.send(fPacket);
System.out.println("??????");
falg = false;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

?????UDP?????

package com.wangxing.test4;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class UDPServer4 {
public static void main(String[] args) throws Exception {
DatagramSocket server = new DatagramSocket(3000);
byte[] bytes = new byte[1024];
while (true) {
DatagramPacket packet = new DatagramPacket(bytes, bytes.length);
System.out.println("****??????????????????");
server.receive(packet);
ClientThread4 clientThread4 = new ClientThread4(server, packet);
clientThread4.setPriority(4);
clientThread4.start();
}
}
}

???????????UDP???Java??????????????????????????????????

上一篇:Leetcode--49. 字母异味词分组
下一篇:JVM 性能调优监控工具

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2026年06月03日 10时29分54秒