中易网

求一个web完整的JAVA聊天室开源代码!有注释的话就更好了,感激不尽

答案:3  悬赏:80  
解决时间 2021-04-28 00:37
  • 提问者网友:房东的猫
  • 2021-04-27 19:04
求一个web完整的JAVA聊天室开源代码!有注释的话就更好了,感激不尽
最佳答案
  • 二级知识专家网友:陪伴是最长情的告白
  • 2021-04-27 20:39
服务器的:
package liaotian;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;

public class server {

public server() {
try {
//设置sever端的链接
ServerSocket s = new ServerSocket(6667);//创建一个ServerSocket套接字对象,并绑定在6667端口上
Socket ss = s.accept();//声明一个Socket对象
//实例化输出流
OutputStream out = ss.getOutputStream();
DataOutputStream dout = new DataOutputStream(out);
//实例化输入流
InputStream in = ss.getInputStream();
DataInputStream din = new DataInputStream(in);
System.out.print(din.readUTF() + "!");
dout.writeUTF("你已经连接到服务器" + "\n" + "你的地址:" + ss.getInetAddress()
+ "\n" + "你的链接端口:" + ss.getLocalPort() + "\n");
//实例化两个线程的对象并启动线程
new ReadMessage(din).start();
new SendMessage(dout).start();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new server();
}
}
// 接受客户端信息
class ReadMessage extends Thread {
private DataInputStream din;
public ReadMessage(DataInputStream din) {
this.din = din;
}
public void run() {
String str;
try {
while (true) {
str = din.readUTF();
System.out.println(new Date().toLocaleString() + "客户端说:" + str);
if (str.equals("bye")) {
System.out.println("客户端下线!");
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 发出服务器信息
class SendMessage extends Thread {
private DataOutputStream dout;
public SendMessage(DataOutputStream dout) {
this.dout = dout;
}
public void run() {
InputStreamReader inr = new InputStreamReader(System.in);
BufferedReader buf = new BufferedReader(inr);
String str;
try {
while (true) {
str = buf.readLine();
dout.writeUTF(str);
if (str.equals("bye")) {
System.out.println("服务器退出!");
System.exit(1);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}

客户端:
package liaotian;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Date;

public class client {

public client() {
try {
//设置sever端的链接
Socket s = new Socket("127.0.0.1", 6667);//监听端口号6667
//实例化输入流
InputStream in = s.getInputStream();
DataInputStream din = new DataInputStream(in);
//实例化输出流
OutputStream out = s.getOutputStream();
DataOutputStream dout = new DataOutputStream(out);
dout.writeUTF("服务器你好!我是客户端");
System.out.println(din.readUTF());
//实例化两个线程的对象并启动线程
new Thread(new SenderMessage(dout)).start();
new Thread(new ReaderMessage(din)).start();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new client();
}
}
class ReaderMessage implements Runnable {
private DataInputStream din;
public ReaderMessage(DataInputStream din) {
this.din = din;
}
public void run() {
String str;
try {
while (true) {
str = din.readUTF();
System.out.println(new Date().toLocaleString() + "服务器说:" + str);
if (str.equals("bye")) {
System.out.println("服务器已经关闭,此程序自动退出!");
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
class SenderMessage implements Runnable {
private DataOutputStream dout;
public SenderMessage(DataOutputStream dout) {
this.dout = dout;
}
public void run() {
String str;
InputStreamReader inf = new InputStreamReader(System.in);
BufferedReader buf = new BufferedReader(inf);
try {
while (true) {
str = buf.readLine();
dout.writeUTF(str);
if (str.equals("bye")) {
System.out.println("客户端自己退出!");
System.exit(1);
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
全部回答
  • 1楼网友:社会水太深
  • 2021-04-27 23:26
给多少钱啊 这可不是一个小东西哦
  • 2楼网友:闲懒诗人
  • 2021-04-27 22:09
给多少钱啊 这可不是一个小东西哦 再看看别人怎么说的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息