server端:
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
// 服务器类
public class MyServer {
private int port = 8083;// 默认服务器端口1
private int port2 = 8084;// 默认服务器端口2
public MyServer() {
}
public MyServer(int port) {
this.port = port;
}
// service方法
public void service() {
try {// 建立服务器连接
ServerSocket server = new ServerSocket(port);//创建 ServerSocket类 ,port端口
Socket socket = server.accept();// 等待客户连接
try {
DataInputStream in = new DataInputStream(socket
.getInputStream());// 读取客户端传过来信息的DataInputStream
DataOutputStream out = new DataOutputStream(socket
.getOutputStream());// 向客户端发送信息的DataOutputStream
while (true) {
String accpet = in.readUTF();// 读取来自客户端的信息
System.out.println(accpet);//输出来自客户端的信息
out.writeUTF("服务器发送给client1");//服务器返回给client1数据
}
} finally {
socket.close();//关闭连接
server.close();//关闭
}
} catch (IOException e) {
e.printStackTrace();
}
}
public void service2() {
try {
ServerSocket server = new ServerSocket(port2);//创建 ServerSocket类 ,port2端口
Socket socket = server.accept();// 等待客户连接
try {
DataInputStream in = new DataInputStream(socket
.getInputStream());// 读取客户端传过来信息的DataInputStream
DataOutputStream out = new DataOutputStream(socket
.getOutputStream());// 向客户端发送信息的DataOutputStream
while (true) {
String accpet = in.readUTF();// 读取来自客户端的信息
System.out.println(accpet);//输出来自客户端的信息
out.writeUTF("服务器返回给client2");//服务器返回给client2数据
}
} finally {
socket.close();//关闭连接
server.close();//关闭
}
} catch (IOException e) {//捕获异常
e.printStackTrace();
}
}
public static void main(String[] args) {
MyServer server = new MyServer();
new Thread(server::service,"s1").start();
new Thread(server::service2,"s2").start();
}
}
Client类:
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.Scanner;
public class MyClient2 {
private String host = "localhost";// 默认连接到本机
private int port = 8084;
public MyClient2() {
}
// 连接到指定的主机和端口
public MyClient2(String host, int port) {
this.host = host;
this.port = port;
}
public void Send() {
try {
Socket socket = new Socket(host, port);//创建Socket类对象
try {
DataInputStream in = new DataInputStream(socket
.getInputStream());// 读取服务器端传过来信息的DataInputStream
DataOutputStream out = new DataOutputStream(socket
.getOutputStream());// 向服务器端发送信息的DataOutputStream
Scanner scanner = new Scanner(System.in);
while (true) {
String send = scanner.nextLine();//读取控制台输入的内容
System.out.println("客户端2:" + send);//输出键盘输出内容提示 ,也就是客户端向服务器端发送的消息
// 把从控制台得到的信息传送给Myserver
out.writeUTF("客户端2:" + send);//将客户端的信息传递给服务器
String accpet = in.readUTF();// 读取来自服务器的信息
System.out.println(accpet);//输出来自服务器返回的信息
}
} finally {
socket.close();//关闭Socket监听
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {//主程序方法
new MyClient2().Send();
}
}
另一个Client只需修改port即可。
运行结果: