天天看點

java 簡單的聊天室_Java基于socket實作簡易聊天室執行個體

本文執行個體講述了Java基于socket實作簡易聊天室的方法。分享給大家供大家參考。具體實作方法如下:

chatroomdemo.java

package com.socket.demo;

import java.io.IOException;

import java.net.DatagramSocket;

public class ChatRoomDemo {

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();

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 簡單的聊天室_Java基于socket實作簡易聊天室執行個體

希望本文所述對大家的java程式設計有所幫助。