本文主要是介绍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 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实现多人访问服务器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!