欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-04 20:13:48
本文实例讲述了java基于socket实现简易聊天室的方法。分享给大家供大家参考。具体实现方法如下: chatroomdemo.java package com...

本文实例讲述了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基于socket实现简易聊天室实例

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