Java基於socket完成簡略單純聊天室實例。本站提示廣大學習愛好者:(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法式設計有所贊助。