UDP连接
两端无需建立连接,不可靠连接,效率高,数据可能会丢失,数据大小有限制,一次发送64kb的数据包
以下是模拟客户端发消息,服务器端收消息
(其实服务器端是负责转发消息的,用户不与服务器通信)
[之后再写聊天室项目]
客户端向服务器端发一条消息
UDPCilent客户端
package com.westos.csdn;
import java.io.IOException;
import java.net.*;
import java.util.Scanner;
public class UDPCilent {
public static void main(String[] args) throws IOException {
DatagramSocket ds = new DatagramSocket();
Scanner scanner = new Scanner(System.in);
System.out.println("输入你要发送的字符串");
String data = scanner.nextLine();
byte[] str = data.getBytes();
InetAddress inetAddress = InetAddress.getByName("192.168.6.116");
DatagramPacket dp = new DatagramPacket(str, str.length, inetAddress, 8888);
ds.send(dp);
}
}
UDPServer服务器端
package com.westos.csdn;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UDPServer {
public static void main(String[] args) throws IOException {
DatagramSocket ds = new DatagramSocket(8888);
byte[] bytes = new byte[1024];
DatagramPacket dp = new DatagramPacket(bytes,bytes.length);
ds.receive(dp);
byte[] data = dp.getData();;
String string = new String(data, 0,dp.getLength());
System.out.println(string);
}
}
客户端向服务器端循环发消息
UDPCilent客户端代码
package com.jingfei.csdn1;
import java.io.IOException;
import java.net.*;
import java.util.Scanner;
public class UDPCilent {
public static void main(String[] args) throws IOException {
DatagramSocket ds = new DatagramSocket();
Scanner scanner = new Scanner(System.in);
System.out.println("输入你要发送的字符串");
while (true){
String data = scanner.nextLine();
if (":EXIT".equals(data))break;
byte[] str = data.getBytes();
InetAddress inetAddress = InetAddress.getByName("192.168.6.116");
DatagramPacket dp = new DatagramPacket(str, str.length, inetAddress, 8888);
ds.send(dp);
}
ds.close();
}
}
UDPServer服务器端
pack