见代码:
server:
package sinc.sockets;
import java.io.*;
import java.net.*;
public class MyServer {
public static void main(String[] args) throws IOException {
int count = 0;
@SuppressWarnings("resource")
ServerSocket server = new ServerSocket(5678);
while (true) {
Socket client = server.accept();
MultiClientsThread mc = new MultiClientsThread(client);
mc.start();
count++;// 统计客户端的数量
System.out.println("客户端的数量:" + count);
InetAddress address = client.getInetAddress();
System.out.println("当前客户端的IP:" + address.getHostAddress());
}
}
}
多线程类:
package sinc.sockets;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class MultiClientsThread extends Thread {
private Socket client;
public MultiClientsThread(Socket client) {
super();
this.client = client;
}
public void run() {
BufferedReader in;
PrintWriter out;
try {
out = new PrintWriter(client.getOutputStream());
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
while (true) {
String str = in.readLine();
System.out.println(str);
out.println("has receive.");
out.flush();
if (str.equals("end"))
break;
}
client.close();
System.out.println("Client disconnect.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
客户端:
package sinc.sockets;
import java.net.*;
import java.io.*;
public class Client {
static Socket server;
public static void main(String[] args) throws Exception {
server = new Socket(InetAddress.getLocalHost(), 5678);
BufferedReader in = new BufferedReader(new InputStreamReader(server.getInputStream()));
PrintWriter out = new PrintWriter(server.getOutputStream());
BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));
while (true) {
String str = wt.readLine();
out.println(str);
out.flush();
if (str.equals("end")) {
break;
}
System.out.println(in.readLine());
}
server.close();
}
}