java网络编程作业
基于UDP简单聊天窗口,图形化界面,包含客户端和服务端
这是一个简单的图形化界面
一个简单的基于UDP的聊天客户端和服务端,
适合新人学习,或者应急交作业
示例图
非常简洁,简洁的页面,简洁的方法。
方法介绍
主要代码
服务端
DatagramSocket socket; // 1.创建服务器端DatagramSocket,指定端口 { try { socket = new DatagramSocket(8800); } catch (SocketException e) { e.printStackTrace(); } } InetAddress address; int port ; public ChatServer(){ super(); jf.setTitle("服务端"); Thread t=new Thread(this); t.start(); button1.addActionListener(this); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == button1) { send(); } } //发送按钮 发送信息 private void send() { String send=Input1.getText(); //获取输入框中文字 byte[] data2 = send.getBytes(); //将接收到的数据转换为字节数组 DatagramPacket packet2 = new DatagramPacket(data2, data2.length,address,port);// 2.创建数据报,包含响应的数据信息 try { socket.send(packet2); // 3.响应客户端 发送给客户端 } catch (IOException e) { e.printStackTrace(); } Text.append("服务端:"+send+"n"); //在聊天面板上显示条田信息 } //接收信息 @Override public void run() { while (true) { // 2.创建数据报,用于接收客户端发送的数据 byte[] data = new byte[1024];//创建字节数组,指定接收的数据包的大小 DatagramPacket packet = new DatagramPacket(data, data.length); try { socket.receive(packet); // 此方法在接收到数据报之前会一直阻塞 } catch (IOException e) { e.printStackTrace(); } // 4.读取数据 String info = new String(data, 0, packet.getLength());//创建字符串对象 Text.append("客户端:" + info + "n"); //在聊天面板显示信息 address = packet.getAddress();//获取发送端的地址 port = packet.getPort();//获取 发送端进程所绑定的端口 } }
客户端
InetAddress address; // 1.定义服务器的地址、端口号、数据 DatagramSocket socket; { try { socket = new DatagramSocket(7740); address = InetAddress.getByName("localhost"); } catch (UnknownHostException | SocketException e) { e.printStackTrace(); } } int port = 8800;//定义端口类型 public ChatClient() { super(); jf.setTitle("客户端"); Thread t=new Thread(this); t.start(); button1.addActionListener(this); } public void actionPerformed(ActionEvent e) { if (e.getSource() == button1) { send(); } } //发送信息 public void send() { String send=Input1.getText(); //获取文本 byte[] data = send.getBytes();//将接收到的数据变成字节数组 DatagramPacket packet = new DatagramPacket(data, data.length, address, port);//2.创建数据报,包含发送的数据信息 try { socket.send(packet);// 4.向服务器端发送数据报 } catch (IOException e) { e.printStackTrace(); } Text.append("客户端:"+send+"n"); //在面板上显示信息 } //接受服务端的信息 @Override public void run() { while (true) { byte[] data2 = new byte[1024];//创建字节数组 DatagramPacket packet2 = new DatagramPacket(data2, data2.length);// 1.创建数据报,用于接收服务器端响应的数据 try { socket.receive(packet2);// 2.接收服务器响应的数据 } catch (IOException e) { e.printStackTrace(); } //3.读取数据 String reply = new String(data2, 0, packet2.getLength());//创建字符串对象 Text.append("服务器端:" + reply + "n"); //在面板上显示数据 } }
很简单适合新手学习或者交作业
完整代码:https://download.csdn.net/download/muMason/37026642
超链接:完整代码
新人制作不易,真的是一个bug改一天!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)