服务器端
public class Server {
public static void main(String[] args) {
try {
ServerSocket server = new ServerSocket(10000);
Socket socket;
while ((socket = server.accept()) != null) {
new Thread(new ChatRunnable(socket)).start();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
子线程
public class ChatRunnable implements Runnable {
private Socket socket;
public ChatRunnable(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
String host = socket.getInetAddress().getHostAddress();
try {
InputStream is = socket.getInputStream();
System.out.println(host + " 上线了");
byte[] buffer = new byte[102400];
int length;
while ((length = is.read(buffer)) != -1) {
System.out.println(host + ":" + new String(buffer, 0, length, "UTF-8"));
}
System.out.println(host + " 下线了");
} catch (IOException e) {
System.out.println(host + ":" + e.getMessage());
e.printStackTrace();
}
}
}
客户端
public class Client {
public static void main(String[] args) {
try {
Socket socket = new Socket("10.0.0.1", 10000);
Scanner scanner = new Scanner(System.in);
OutputStream os = socket.getOutputStream();
InputStream is = socket.getInputStream();
String text;
while (true) {
text = scanner.next();
os.write(text.getBytes("UTF-8"));
if (text.equals("end")) {
break;
}
}
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}