当前位置:
文档之家› JAVA SOCKET聊天室完整源代码
JAVA SOCKET聊天室完整源代码
} }
// 创建一个线程用来进行接收,读取数据 class MyServerReader extends Thread {
private DataInputStream dis;
public MyServerReader(DataInputStream dis) { this.dis = dis;
}
} }
// 创建一个线程用来进行接收读取数据 class MyClientReader extends Thread {
private DataInputStream dis;
public MyClientReader(DataInputStream dis) { this.dis = dis;
}
public void run() { String msg; try { while (true) { msg = dis.readUTF(); System.out.println("服务端说:" + msg); if (msg.equals("bye")) { System.out.println("服务端下线,程序退出"); System.exit(0); } } } catch (IOException e) {
DataOutputStream(s1.getOutputStream()); // 实例化两个进程 Thread mcr = new MyClientReader(dis); Thread mcw = new MyClientWriter(dos); // 启动两个进程 mcr.start(); mcw.start();
4/5
System.out.println(e); } } }
// 创建一个进程用来写入并发送数据 class MyClientWriter extends Thread {
private DataOutputStream dos;
public MyClientWriter(DataOutputStream dos) { this.dos = dos;
} } catch (IOException e) {
System.out.println(e); } } }
5/5
ห้องสมุดไป่ตู้
} }
// 创建一个进程用来写入并发送数据 class MyServerWriter extends Thread {
private DataOutputStream dos;
public MyServerWriter(DataOutputStream dos) { this.dos = dos;
}
"); // 实例化输出流 DataOutputStream dos = new
DataOutputStream(s1.getOutputStream()); // 实例化输入流 DataInputStream dis = new DataInputStream(s1.getInputStream()); // 实例化两个线程的对象 Thread msr = new MyServerReader(dis); Thread msw = new MyServerWriter(dos); // 启动线程 msr.start(); msw.start();
public void run() { BufferedReader br = new BufferedReader(new
InputStreamReader(System.in)); String msg; try { while (true) { msg = br.readLine(); dos.writeUTF(msg); if (msg.equals("bye")) { System.out.println("自己下线,程序退出"); System.exit(0); } } } catch (IOException e) { System.out.println(e); }
} }
3/5
客户端代码: import java.io.*; import .*;
public class ClientTest3 { public static void main(String[] args) throws Exception, Exception
{ // 链接sever端 Socket s1 = new Socket("127.0.0.1", 8888); // 实例化输入流 DataInputStream dis = new DataInputStream(s1.getInputStream()); // 实例化输出流 DataOutputStream dos = new
Client 端的示意图:
1/5
实现代码如下: 服务端代码: import java.io.*; import .*;
public class ServerTest3 { public static void main(String[] args) throws Exception { // 设置sever端的链接 ServerSocket s = new ServerSocket(8888); Socket s1 = s.accept();// sever等待链接 System.out.println(s1.getInetAddress().getHostAddress()+"上线了
}
@Override public void run() {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String msg; try {
while (true) { msg = br.readLine(); dos.writeUTF(msg); if (msg.equals("bye")) { System.out.println("自己下线,程序退出"); System.exit(0); }
2/5
public void run() { String msg; try { while (true) { msg = dis.readUTF(); System.out.println("客户端说:" + msg); if (msg.equals("bye")) { System.out.println("客户端下线,程序退出"); System.exit(0); } } } catch (IOException e) { System.out.println(e); }
说明:
本人不才,Java 初学者,自己平时也喜欢总结一些东西, 然后与大家分享,同时希望得到 Java 高手的指正和指导, 更希望能和广大的 Java 爱好者交朋友,共同学习 Java,分 享经验,一起进步。本人 QQ:1134135987,非 Java 爱好者 勿加,谢谢!
以下代码实现的功能:
在一个局域网内,两人在 Eclipse 的控制台上,可以点对点的进行聊 天,并且某一方可以同时输入多句话,以下时实例图片: Server 端的示意图: