这是用UDP实现简单的聊天功能:
客户端:
package 套接字编程.UDP聊天;
import javax.security.sasl.SaslException;
import java.io.IOException;
import java.net.*;
import java.util.Scanner;
/**
* Create with Darcula IDEA
* Description:
* 客户端
*/
public class UdpChatClient {
public static void main(String[] args) {
System.out.println("======顾客======");
try {
//1.创建数据报套接字
DatagramSocket socket = new DatagramSocket(8888);
Scanner scanner = new Scanner(System.in);
while(true){
//2.获取用户输入
String message = scanner.next();
//将输入封装成数组
byte[] content = message.getBytes();//得到一个操作系统默认的编码格式的字节数组
//3.创建数据报包
DatagramPacket packet = new DatagramPacket(content,content.length,InetAddress.getLocalHost(),9999);
//4.发送数据
socket.send(packet);
//5.接受数据
byte[] content2 = new byte[1024];
DatagramPacket packet2 = new DatagramPacket(content2,content2.length);
socket.receive(packet2);
//将接收的客服的数据封装成数组
byte[] serverMessage = packet2.getData();
//从数组转化为字符串
String str = new String(serverMessage,0,serverMessage.length);
System.out.println("客服说:" + str);
if(message.equals("bye")){
break;
}
}
socket.close();
}catch (SocketException e){
e.printStackTrace();
}catch (UnknownHostException e){
e.printStackTrace();
}catch(IOException e){
e.printStackTrace();
}
}
}
服务端:
package 套接字编程.UDP聊天;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.rmi.UnexpectedException;
import java.util.Scanner;
/**
* Create with Darcula IDEA
* Description:
* 服务端
*/
public class UdpChatServer {
public static void main(String[] args) {
System.out.println("======客服======");
try{
//1.创建数据报套接字
DatagramSocket socket = new DatagramSocket(9999);
Scanner scanner = new Scanner(System.in);
while(true){
//2.接受数据
byte[] content2 = new byte[1024];
DatagramPacket packet2 = new DatagramPacket(content2,content2.length);
socket.receive(packet2);
byte[] clientMessage = packet2.getData();
String str = new String(clientMessage,0,clientMessage.length);
System.out.println("顾客说:"+ str);
//3.获取用户输入
String message = scanner.next();
byte[] content = message.getBytes();
//4.创建数据报包
DatagramPacket packet = new DatagramPacket(content,content.length,InetAddress.getLocalHost(),8888);
//5.发送数据
socket.send(packet);
if(message.equals("bye")){
break;
}
}
//6.释放资源
socket.close();
}catch (SocketException e){
e.printStackTrace();
}catch (UnexpectedException e){
e.printStackTrace();
}catch (IOException e){
e.printStackTrace();
}
}
}