300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > 网络编程应用:基于UDP协议【实现聊天程序】--练习

网络编程应用:基于UDP协议【实现聊天程序】--练习

时间:2020-09-20 18:09:51

相关推荐

网络编程应用:基于UDP协议【实现聊天程序】--练习

要求:

使用UDP协议实现一个聊天程序

代码:

发送端:

package UDP聊天程序;import java.io.IOException;import .DatagramPacket;import .DatagramSocket;import .InetAddress;import .SocketException;import .UnknownHostException;import java.util.Scanner;public class Send {public static void main(String[] args) {System.out.println("发送端已启动!");DatagramSocket socket=null;Scanner scanner=new Scanner(System.in);try {//1.创建Datagramsocket对象socket=new DatagramSocket();while(true){//2.要发送的数据String string=scanner.nextLine();//3.创建数据包DatagramPacket packet=new DatagramPacket(string.getBytes(), string.getBytes().length,InetAddress.getLocalHost(),6666);//4.发送数据socket.send(packet);//若我方发送了bye,马上结束聊天if(string.equals("bye")){System.out.println("bye,聊天结束!");break;}//5.接收--接收端回复的数据byte[] bs=new byte[1024];DatagramPacket packet2=new DatagramPacket(bs, bs.length);socket.receive(packet2);String string2=new String(packet2.getData(), 0, packet2.getLength());//若对方发送了bye,马上结束聊天if(string2.equals("bye")){System.out.println("bye,聊天结束!");break;}System.out.println("接收端回复:"+string2);}} catch (SocketException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (UnknownHostException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if(socket!=null){socket.close();}}}}

接收端:

package UDP聊天程序;import java.io.IOException;import .DatagramPacket;import .DatagramSocket;import .SocketException;import java.util.Scanner;public class Receive {public static void main(String[] args) {System.out.println("接收端已启动!");DatagramSocket socket=null;Scanner scanner=new Scanner(System.in);try {//1.创建Datagrams对象socket=new DatagramSocket(6666);while(true){//2.创建数据包packetbyte[] buf=new byte[1024];DatagramPacket packet=new DatagramPacket(buf, buf.length);//3.接收数据socket.receive(packet);String string=new String(packet.getData(), 0, packet.getLength());//若对方发送了bye,马上结束聊天if(string.equals("bye")){System.out.println("bye,聊天结束!");break;}System.out.println("发送端说:"+string);//4.给发送端回复String string2=scanner.nextLine();DatagramPacket packet2=new DatagramPacket(string2.getBytes(), string2.getBytes().length,packet.getAddress(),packet.getPort());socket.send(packet2);//若我方发送了bye,马上结束聊天if(string2.equals("bye")){System.out.println("bye,聊天结束!");break;}}} catch (SocketException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally {if(socket!=null){socket.close();}}}}

运行结果:

接收端聊天列表:

发送端聊天列表:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。