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即可。
運作結果:
