UDP实现聊天
UDP网络编程
UDP不区分客户端和服务器端
这里客户端表示数据发送方,服务器表示数据接收方
package UDPcode;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.nio.charset.StandardCharsets;
public class UdpClient {
public static void main(String[] args) throws Exception {
//1,建立一个socket
//在这里为client的socket附上一个端口号,也可以用recieve()接受消息
DatagramSocket socket = new DatagramSocket();
//2,建个包,包括数据,IP地址,端口号,并把这些东西绑定到包上
String msg="服务器你好,我叫阿伟";
InetAddress localhost = InetAddress.getByName("localhost");
int port=9090;
//绑定到包上
DatagramPacket packet=new DatagramPacket(msg.getBytes(),0,msg.getBytes().length,localhost,port);
//3,发送包
socket.send(packet);
}
}
package UDPcode;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class UdpServer {
public static void main(String[] args) throws Exception {
//开放端口
DatagramSocket socket=new DatagramSocket(9090);
//接收数据包
byte[] buffer=new byte[1024];
DatagramPacket packet=new DatagramPacket(buffer,0,buffer.length);
//recieve()一个阻塞式接受,类似于sout,不从键盘读取到数据就不跳到下一步
socket.receive(packet);
System.out.println(packet.getAddress());
System.out.println(new String(packet.getData(),0,packet.getLength()));
//关闭连接
socket.close();
}
}

浙公网安备 33010602011771号