码迷,mamicode.com
首页 > 其他好文 > 详细

Socket和Runnable实现多人访问服务器

时间:2015-03-05 17:11:57      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:

/*
 * Socket和Runnable实现多人访问服务器
 * 由于每一个连接都会启动一个新的线程,因此多个客户就可以同时连接到服务器了。
 * 基本的运行步骤如下:
 * 1)编程和运行服务器程序
 * 2)打开多个telnet窗口
 * 3)在这些窗口之间切换,并键入命令。注意你可以同时通过这些窗口进行通信。
 * 4)当完成这些之后,切换到你启动服务器的程序窗口,并使用CTRL + C强行关闭它
 * */
package threaded;


import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;


public class ThreadedEchoServer {


public static void main(String[] args) {
// TODO Auto-generated method stub
try{
int i = 1;
ServerSocket s = new ServerSocket(8189);
while(true){
Socket incoming = s.accept();
System.out.println("Spawning" + i);
Runnable r = new ThreadedEchoHandler(incoming);
Thread t = new Thread(r);
i++;
}
}catch(IOException e){
e.printStackTrace();
}

}


}


class ThreadedEchoHandler implements Runnable{
private Socket incoming;
public ThreadedEchoHandler(Socket i){
incoming = i;
}

public void run(){
try{
try{
InputStream inStream = incoming.getInputStream();
OutputStream outStream = incoming.getOutputStream();
Scanner in = new Scanner(inStream);
PrintWriter out = new PrintWriter(outStream, true);
out.println("Hello Enter BYE to exit");
boolean done = false;
while(!done && in.hasNextLine()){
String line = in.nextLine();
out.println("Echo: " + line);
if(line.trim().equals("BYE")){
done = true;
}
}
}finally{
incoming.close();
}
}catch(IOException e){
e.printStackTrace();
}
}
}

Socket和Runnable实现多人访问服务器

标签:

原文地址:http://blog.csdn.net/u012965373/article/details/44082599

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!