千家信息网

Java如何基于UDP实现聊天室的功能

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,这篇文章将为大家详细讲解有关Java如何基于UDP实现聊天室的功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。项目结构data.javapackage udp;i
千家信息网最后更新 2024年11月23日Java如何基于UDP实现聊天室的功能

这篇文章将为大家详细讲解有关Java如何基于UDP实现聊天室的功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

项目结构

data.java

package udp;import java.net.InetAddress;public class data { InetAddress Address; int Port; public InetAddress getAddress() {  return Address; } public void setAddress(InetAddress address) {  Address = address; } public int getPort() {  return Port; } public void setPort(int port) {  Port = port; }}

服务器端

Server.java

package udp;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;import java.util.ArrayList;public class Server { DatagramSocket socket = null;  ArrayList client;  public Server() {   try {   socket = new DatagramSocket(8888);  } catch (SocketException e) {   // TODO Auto-generated catch block   e.printStackTrace();  }  client = new ArrayList(); }  public void s_r(){  try {      while(true) {    byte[] buf = new byte[3000];    //接收数据的数据包    DatagramPacket packet = new DatagramPacket(buf,buf.length);    socket.receive(packet);    //地址    InetAddress clientAddress = packet.getAddress();    //端口号        int clientPort = packet.getPort();    data d = new data();    d.setAddress(clientAddress);    d.setPort(clientPort);    int i=0;    //判断客户端集合里是否存在发送新消息的客户端    for(;i

客户端

package udp;

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;import java.net.UnknownHostException;public class Client { DatagramSocket socket = null; DatagramPacket packet; InetAddress address = null; Client(){  try {   socket = new DatagramSocket();  } catch (SocketException e) {   // TODO Auto-generated catch block   e.printStackTrace();  }   }  public void s_r() {  try {   // 把表示服务器端IP地址的字符串转换成InetAddress对象   address = InetAddress.getByName("127.0.0.1");   } catch (UnknownHostException e) {    // TODO Auto-generated catch block    e.printStackTrace();  }    String s = "登陆";  byte[] b = s.getBytes();  packet = new DatagramPacket(b,b.length,address,8888);  try {   socket.send(packet);  } catch (IOException e1) {   // TODO Auto-generated catch block   e1.printStackTrace();  }  //发送消息的线程   new Thread(new Runnable() {    @Override    public void run() {     // TODO Auto-generated method stub     String sendStr;     BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));     try {      while((sendStr = stdIn.readLine())!=null) {       byte[] buf = sendStr.getBytes();       packet = new DatagramPacket(buf,buf.length,address,8888);       socket.send(packet);      }     } catch (IOException e) {      // TODO Auto-generated catch block      e.printStackTrace();     }         }       }).start();   //接收消息的线程   new Thread(new Runnable() {    @Override    public void run() {     // TODO Auto-generated method stub     byte[] buf_1 = new byte[3000];     // 使用空字节数组构造空数据包     DatagramPacket packet = new DatagramPacket(buf_1,buf_1.length);     try {       while(true) {        socket.receive(packet);        String received = new String(packet.getData(),0,packet.getLength()).trim();        System.out.println("接收到的信息:"+received);        }               } catch (IOException e) {      // TODO Auto-generated catch block      e.printStackTrace();     }    }   }).start(); }  public static void main(String[] args) {  Client c = new Client();  c.s_r(); } }

关于"Java如何基于UDP实现聊天室的功能"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

0