import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
public class SocketServer{
static List<Socket> socketList = new ArrayList<Socket>();
public static void main(String[] args) {
int port = 55533;
ServerSocket server = null;
try {
server = new ServerSocket(port);
System.out.println("服務器開啓");
while (true) {
Socket socket = server.accept();
socketList.add(socket);
System.out.println("連接客戶端數目:" + socketList.size());
new Thread(new DispatcherMessage(socket, socketList)).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.Socket;
import java.util.Scanner;
public class WriteDataToServer implements Runnable {
private Socket clientSocket;
public WriteDataToServer(Socket clientSocket) {
this.clientSocket = clientSocket;
}
public void run() {
try {
OutputStream out = clientSocket.getOutputStream();
OutputStreamWriter writer = new OutputStreamWriter(out);
Scanner scanner = new Scanner(System.in);
System.out.println("請輸入需求—————— ");
while (true) {
String data = scanner.nextLine();
writer.write(data+"\n");
writer.flush();
if(data.equals("bye")){
break;
}
}
clientSocket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
}
}
import java.io.IOException;
import java.net.Socket;
public class SocketClient {
// 要連接的服務端IP地址和端口
String host = "127.0.0.1";
int port = 55533;
public static void main(String[] args) {
try {
Socket socket = new Socket("127.0.0.1", 55533);
System.out.println("客戶端啓動");
new Thread(new WriteDataToServer(socket)).start();
new Thread(new ReadDataFromServer(socket)).start();
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
public class ReadDataFromServer implements Runnable {
private Socket clientSocket;
public ReadDataFromServer(Socket clientSocket) {
this.clientSocket = clientSocket;
}
public void run() {
try {
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String message = in.readLine();
System.out.println("來自服務器的消息:" + message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
import java.io.*;
import java.net.Socket;
import java.util.List;
public class DispatcherMessage implements Runnable {
private Socket clientSocket = null;
private List<Socket> socketlist = null;
private BufferedReader br = null;
public DispatcherMessage(Socket clientSocket, List<Socket> socketlist) {
this.clientSocket = clientSocket;
this.socketlist = socketlist;
try {
br = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
} catch (IOException e) {
e.printStackTrace();
}
}
public void run() {
while (true) {
String test = null;
String result = null;
try {
while((test = br.readLine()) != null){
System.out.println("服務端接收到客戶端發送的信息" + test);
for(Socket socket : socketlist){
if(!clientSocket.equals(socket)){
result = test;
System.out.println(result+"服務器接受端測試");
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
bw.write(result);
bw.newLine();
bw.flush();
}
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}