您当前的位置: 首页 > 

郭梧悠

暂无认证

  • 2浏览

    0关注

    402博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

多个客户同时连接ServerSocket的简单实现

郭梧悠 发布时间:2012-05-07 23:31:18 ,浏览量:2

当一个 Socket 会话产生后或者说服务器端SeverSocket接收了Socket后,将这个sokcet会话交给线程处理,然后主程序继续监听。运用 Thread 类或 Runnable 接口来实现是不错的办法。  

具体的代码如下:

服务器Socket

*****************************************************************************

public class Server extends ServerSocket {     private static final int SERVER_PORT = 10000; public Server() throws IOException { super(SERVER_PORT); try{ System.out.println("启动服务器"); while(true){   Socket socket = this.accept();     new ServerThread(socket);//每当收到一个socket就创建一个线程 } }catch(IOException e){ e.printStackTrace(); } finally{ this.close(); } }

public static void main(String args[]) throws IOException{      new Server();     } }

****************************************************************************************************

线程类

public class ServerThread extends Thread{     private Socket client; private BufferedReader in; public ServerThread(Socket client) { super(); this.client = client; try { this.start(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } @Override public void run() { try { in = new BufferedReader(new InputStreamReader( client.getInputStream()));// 得到客户端的输入流 System.out.println(in.readLine());//控制台输入信息 client.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }                     }

**********************************************************************************************************

客户端类

public class Client { private Socket socket; private PrintWriter out;//相当于向外写文件,所以用out     private static int count = 1; public Client(String clientName) { this.connect(); } public Client() { this(null); this.connect(); } public void connect() { try { socket = new Socket("127.0.0.1", 10000); System.out.println("请输入信息:"); out = new PrintWriter(socket.getOutputStream(), true); BufferedReader line = new BufferedReader(new InputStreamReader( System.in));// 从控制台输入信息 out.println(line.readLine());// 输入信息到服务器 out.close(); socket.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /**  * @param args  */ public static void main(String[] args) { new Client(); } }

****************************************************************************************

测试方法,先运行Server,再运行Client

关注
打赏
1663674776
查看更多评论
立即登录/注册

微信扫码登录

0.0400s