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

/** 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 stubtry{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实现多人访问服务器

相关文章:

你感兴趣的文章:

标签云: