知识大全 多线程对多个客户端的监听

Posted

篇首语:我会努力奋斗直到亮瞎你们的双眼。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 多线程对多个客户端的监听相关的知识,希望对你有一定的参考价值。

  这是一个比较简单的例子来说明socket编程 服务器端使用了多线程来监听客户端

  服务器端的代码

  package SocketTest;

  import java io *;

  import *;

  import java util *;

  class SocketServer

  public SocketServer()

  Socket ining;

  ServerSocket so;

  try

  so= new ServerSocket( );

  System out println( 等待客户端连接 );

  while(true)

  try

  ining = so accept( );

  System out println( 已连接客户端 );

  GetInfo gi=new GetInfo(ining);//调用线程

   catch (IOException e)

  e printStackTrace();

  

  

  catch (IOException e)

  e printStackTrace();

  

  

  public static void main(String[] args)

  new SocketServer();

  

  private static class GetInfo implements Runnable   //线程类

  private Socket ining;

  private String s=null;

  private BufferedReader b;

  Thread t;

  public GetInfo(Socket ining)

  try

  this ining=ining;

  b=new BufferedReader(new InputStreamReader(ining getInputStream()));

  t=new Thread(this);

  t start();

  catch(IOException e)

  e printStackTrace();

  

  

  public void run()

  try

  while (true)

  s=b readLine();

  System out println(s);

  if(s equals( end ))

  break;

  

  

  catch(IOException e)

  e printStackTrace();

  

  

  

  

  客户端的代码

  package SocketTest;

  import java io *;

  import *;

  import java util *;

  public class SocketClient

  public static void main(String[] args)

  try

  Socket so = new Socket( localhost );

  System out println( 连接服务器 );

  BufferedReader b=new BufferedReader(new InputStreamReader(System in));

  OutputStream outStream = so getOutputStream();

  PrintWriter out = new PrintWriter(outStream);

  String s=null;

  while (true)

  s=b readLine();

  out println( Client: +s);

  out flush();

  if(s equals( end ))

  break;

  

  

  catch (IOException e)

  e printStackTrace();

  

  

cha138/Article/program/Java/gj/201311/27636

相关参考