Java基于socket实现简易聊天室实例

 更新时间:2015年05月29日 12:46:36   作者:wo_soul  
这篇文章主要介绍了Java基于socket实现简易聊天室的方法,实例分析了java基于socket实现聊天室服务端与客户端的相关技巧,需要的朋友可以参考下

本文实例讲述了Java基于socket实现简易聊天室的方法。分享给大家供大家参考。具体实现方法如下:

chatroomdemo.java

package com.socket.demo; 
import java.io.IOException; 
import java.net.DatagramSocket; 
public class ChatRoomDemo { 
  /** 
   * @param args 
   * @throws IOException 
   */ 
  public static void main(String[] args) throws IOException { 
    System.out.println("----进入聊天室----"); 
    DatagramSocket send = new DatagramSocket(); 
    DatagramSocket rece = new DatagramSocket(10001); 
    new Thread(new SendDemo(send)).start();// 启动发送端线程 
    new Thread(new ReceiveDemo(rece)).start();// 启动接收端线程 
  } 
}

SendDemo.java

package com.socket.demo; 
import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.net.DatagramPacket; 
import java.net.DatagramSocket; 
import java.net.InetAddress; 
public class SendDemo implements Runnable { 
  private DatagramSocket ds; 
  // 有参数构造函数 
  public SendDemo(DatagramSocket ds) { 
    this.ds = ds; 
  } 
  @Override 
  public void run() { 
    try { 
      BufferedReader bufr = new BufferedReader(new InputStreamReader( 
          System.in)); 
      String line = null; 
      while ((line = bufr.readLine()) != null) { 
        byte[] buf = line.getBytes(); 
        /* 
         * //192.168.1.255是ip段广播地址,发给这个IP的信息, 
         * 在192.168.1.1-192.168.1.255的ip段的所有IP地址都能收到消息 
         */ 
        DatagramPacket dp = new DatagramPacket(buf, buf.length,InetAddress.getByName("192.168.1.255"), 10001);
        ds.send(dp); 
        if ("886".equals(line)) 
          break; 
      } 
      ds.close(); 
    } catch (Exception e) { 
    } 
  } 
}

ReceiveDemo.java

package com.socket.demo; 
import java.net.DatagramPacket; 
import java.net.DatagramSocket; 
public class ReceiveDemo implements Runnable { 
  private DatagramSocket ds; 
  public ReceiveDemo(DatagramSocket ds) { 
    this.ds = ds; 
  } 
  @Override 
  public void run() { 
    try { 
      while (true) { 
        // 2,创建数据包。 
        byte[] buf = new byte[1024]; 
        DatagramPacket dp = new DatagramPacket(buf, buf.length);
        // 3,使用接收方法将数据存储到数据包中。 
        ds.receive(dp);// 阻塞式的。 
        // 4,通过数据包对象的方法,解析其中的数据,比如,地址,端口,数据内容。 
        String ip = dp.getAddress().getHostAddress(); 
        int port = dp.getPort(); 
        System.out.println("----port-----" + port); 
        String text = new String(dp.getData(), 0, dp.getLength()); 
        System.out.println(ip + "::" + text); 
        if (text.equals("886")) { 
          System.out.println(ip + "....退出聊天室"); 
        } 
      } 
    } catch (Exception e) { 
    } 
  } 
}

运行效果图如下:

希望本文所述对大家的java程序设计有所帮助。

相关文章

  • RabbitMQ中Confirm消息确认机制保障生产端消息的可靠性详解

    RabbitMQ中Confirm消息确认机制保障生产端消息的可靠性详解

    这篇文章主要介绍了RabbitMQ中Confirm消息确认机制保障生产端消息的可靠性详解,生产者将数据发送到 RabbitMQ 的时候,可能数据就在半路给搞丢了,因为网络问题啥的,都有可能,需要的朋友可以参考下
    2023-12-12
  • JavaWeb实现mysql数据库数据的添加和删除

    JavaWeb实现mysql数据库数据的添加和删除

    这篇文章主要介绍了如何利用JavaWeb实现mysql数据库数据的添加和删除功能,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2022-03-03
  • IDEA 插件 mapper和xml互相跳转操作

    IDEA 插件 mapper和xml互相跳转操作

    这篇文章主要介绍了IDEA 插件 mapper和xml互相跳转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • java设计模式之代理模式(Porxy)详解

    java设计模式之代理模式(Porxy)详解

    这篇文章主要为大家详细介绍了java设计模式之代理模式Porxy的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • java通过isAccessAllowed方法实现访问控制

    java通过isAccessAllowed方法实现访问控制

    在Web应用开发中,使用Apache Shiro框架的isAccessAllowed方法可以有效管理用户的访问权限,本文详细解析了该方法的实现过程,包括用户身份验证、权限判断和安全性分析,下面就一起来了解一下
    2024-09-09
  • Spring Cloud Stream如何实现服务之间的通讯

    Spring Cloud Stream如何实现服务之间的通讯

    这篇文章主要介绍了Spring Cloud Stream如何实现服务之间的通讯,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • MybatisPlus结合groupby实现分组和sum求和的步骤

    MybatisPlus结合groupby实现分组和sum求和的步骤

    这篇文章主要介绍了MybatisPlus结合groupby实现分组和sum求和的步骤,这次使用的是LambdaQueryWrapper,使用QueryWrapper相对来说简单点就不写了,本文分步骤给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2023-12-12
  • EntityWrapper如何在and条件中嵌套or语句

    EntityWrapper如何在and条件中嵌套or语句

    这篇文章主要介绍了EntityWrapper如何在and条件中嵌套or语句,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03
  • Java对时间的简单操作实例

    Java对时间的简单操作实例

    这篇文章主要介绍了Java对时间的简单操作,实例分析了针对java.util.Date的各类常见操作,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • Java实现答答租车系统

    Java实现答答租车系统

    这篇文章主要为大家详细介绍了Java实现答答租车系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-01-01

最新评论