Java:利用TCP,创建简版聊天室
一、服务端
如果通信不成功请检查8900端口是否被占用,占用请修改其它端口。如果想和其它计算机通信请修改
Socket server = new Socket("127.0.0.1", 8900);
中的ip地址,"127.0.0.1"为当前主机地址。
public static void main(String[] args) {
Thread t = new Thread(() -> {
try {
System.out.println("服务器正在运行");
// 创建服务器端口
ServerSocket server = new ServerSocket(8900);
// 监听客户端
Socket client = server.accept();
// 从客户端获取输入、输出流
DataInputStream in = new DataInputStream(client.getInputStream());
DataOutputStream ou = new DataOutputStream(client.getOutputStream());
// 创建键盘获取字符缓冲流
BufferedReader keyint = new BufferedReader(new InputStreamReader(System.in));
// 循环输出与接收
while (true) {
// 从客户端接收数据并打印
String inStr = in.readUTF();
System.out.println("从客户端接收到:" + inStr);
// 发送键盘输入的字符到客户端,如果输入bye则停止循环
String ouStr = keyint.readLine();
if ("bye".equals(ouStr)) {
break;
}
//写出并刷新管道
ou.writeUTF(ouStr);
ou.flush();
}
} catch (IOException e) {
}
System.out.println("服务器停止。。。");
});
t.start();
}
二、客户端
public static void main(String[] args) {
Thread t = new Thread(() -> {
try {
System.out.println("客户端正在运行");
// 连接服务器端口
Socket server = new Socket("127.0.0.1", 8900);
// 从服务器获取输入、输出流
DataInputStream in = new DataInputStream(server.getInputStream());
DataOutputStream ou = new DataOutputStream(server.getOutputStream());
// 创建键盘获取字符缓冲流
BufferedReader keyint = new BufferedReader(new InputStreamReader(System.in));
// 循环输出与接收
while (true) {
// 发送键盘输入的字符到服务端,如果输入bye则停止循环
String ouStr = keyint.readLine();
if ("bye".equals(ouStr)) {
break;
}
//写出并刷新管道
ou.writeUTF(ouStr);
ou.flush();
// 从服务端接收数据并打印
String inStr = in.readUTF();
System.out.println("服务端接收到:" + inStr);
}
} catch (IOException e) {
// TODO Auto-generated catch block
System.out.println("连接到服务器停止");
}
System.out.println("客户端停止。。。");
});
t.start();
}