package test.socket;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class ThreadEchoServer {
public static void main(String[] args) {
int i=1;
try {
ServerSocket serverSocket=new ServerSocket(8189);
while(true)
{
Socket socket=serverSocket.accept();
System.out.println("子线程:"+i);
Runnable r=new ThreadEchoHandler(socket);
Thread t=new Thread(r);
t.start();
i++;
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
package test.socket;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;
/**
* @author Administrator
*socket多线程服务端处理类
*/
public class ThreadEchoHandler implements Runnable {
private Socket incoming;
public ThreadEchoHandler(Socket i)
{
incoming=i;
}
@Override
public void run() {
try
{
try
{
InputStream inStream=incoming.getInputStream();
OutputStream outStream=incoming.getOutputStream();
Scanner scanner=new Scanner(inStream);
PrintWriter writer=new PrintWriter(outStream,true);
writer.println("输入BYE离开!!!");
//回写、打印客户端输入
boolean done=false;
while(!done&&scanner.hasNextLine())
{
String line=scanner.nextLine();
System.out.println(line);
if(line.trim().toUpperCase().equals("BYE"))
{
done=true;
}
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
finally
{
incoming.close();
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}