您的位置:首页 > 其它

socket服务端-多线程

2014-01-12 22:21 211 查看
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();
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: