EchoThreadServer
package com.java.socket;
import java.net.ServerSocket;
import java.net.Socket;
public class EchoThreadServer {
public static void main(String[] args) {
try
{
ServerSocket server = new ServerSocket(9999);
Socket client=null;
boolean flag = true;
while(flag)
{
System.out.println("服务器已经启动,等待客户端的请求....");
client = server.accept();
new Thread(new EchoThread(client)).start();
}
server.close();
System.out.println("服务器已经关闭!");
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}
EchoThreadClient
package com.java.socket;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class EchoThreadClient {
public static void main(String[] args) {
try {
Socket client = new Socket("localhost", 9999);
BufferedReader buff = null;
BufferedReader input = null;
PrintStream output = null;
buff = new BufferedReader(new InputStreamReader(client.getInputStream()));
input = new BufferedReader(new InputStreamReader(System.in));
output = new PrintStream(client.getOutputStream());
boolean flag = true;
while (flag) {
System.out.println("请输入信息:");
String msg = input.readLine();
if (msg == null || msg.equalsIgnoreCase("bye")) {
flag = false;
} else {
output.println(msg);
String echo = buff.readLine();
System.out.println(echo);
}
}
buff.close();
client.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
EchoThread
package com.java.socket;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
public class EchoThread implements Runnable {
private Socket client;
public EchoThread(Socket client) {
this.client = client;
}
@Override
public void run() {
try {
BufferedReader buff = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintStream out = new PrintStream(client.getOutputStream());
boolean flag = true;
while (flag) {
String msg = buff.readLine();
if (msg == null || msg.equalsIgnoreCase("bye")) {
flag = false;
} else {
out.println("ECHO:" + msg);
}
}
client.close();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}