Java基础 三步学会Java Socket编程(二)

来源:互联网 发布:java异常机制 编辑:程序博客网 时间:2024/06/05 00:13
Java基础 三步学会Java Socket编程(二)
2008-04-10 11:19

第二步 多个客户同时连接

在实际的网络环境里,同一时间只对一个用户服务是不可行的。一个优秀的网络服务程序除了能处理用户的输入信息,还必须能够同时响应多个客户端的连接请求。在java中,实现以上功能特点是非常容易的。

设计原理:

主程序监听一端口,等待客户接入;同时构造一个线程类,准备接管会话。当一个Socket会话产生后,将这个会话交给线程处理,然后主程序继续监听。运用Thread类或Runnable接口来实现是不错的办法。

{实现消息共享}

import java.io.*;import java.net.*;public class Server extends ServerSocket{private static final int SERVER_PORT = 10000;public Server() throws IOException{super(SERVER_PORT);try{while (true){Socket socket = accept();new CreateServerThread(socket);}}catch (IOException e){}finally{close();}}//--- CreateServerThreadclass CreateServerThread extends Thread{private Socket client;private BufferedReader in;private PrintWriter out;public CreateServerThread(Socket s) throws IOException{client = s;in = new BufferedReader(new InputStreamReader(client.getInputStream(), "GB2312"));out = new PrintWriter(client.getOutputStream(), true);out.println("--- Welcome ---");start();}public void run(){try{String line = in.readLine();while (!line.equals("bye")){String msg = createMessage(line);out.println(msg);line = in.readLine();}out.println("--- See you, bye! ---");client.close();}catch (IOException e){}}private String createMessage(String line){xxxxxxxxx;}}public static void main(String[] args) throws IOException{new Server();}}

这个程序监听10000端口,并将接入交给CreateServerThread线程运行。 CreateServerThread线程接受输入,并将输入回应客户,直到客户输入"bye",线程结束。我们可以在createMessage方法 中,对输入进行处理,并产生结果,然后把结果返回给客户。


原创粉丝点击