这是一个比较简单的例子来说明socket编程服务器端使用了多线程来监听客户端 服务器端的代码 package SocketTest; import javaio*; import *; import javautil*; class SocketServer{ public SocketServer(){ Socket incoming; ServerSocket so; try{ so= new ServerSocket(); Systemoutprintln(等待客户端连接); while(true){ try{ incoming = soaccept( ); Systemoutprintln(已连接客户端); GetInfo gi=new GetInfo(incoming);//调用线程 } catch (IOException e){ eprintStackTrace(); } } }catch (IOException e){ eprintStackTrace(); } } public static void main(String[] args){ new SocketServer(); } private static class GetInfo implements Runnable{ //线程类 private Socket incoming; private String s=null; private BufferedReader b; Thread t; public GetInfo(Socket incoming){ try{ thisincoming=incoming; b=new BufferedReader(new InputStreamReader(incominggetInputStream())); t=new Thread(this); tstart(); }catch(IOException e){ eprintStackTrace(); } } public void run(){ try{ while (true){ s=breadLine(); Systemoutprintln(s); if(sequals(end)){ break; } } }catch(IOException e){ eprintStackTrace(); } } } } 客户端的代码 package SocketTest; import javaio*; import *; import javautil*; public class SocketClient{ public static void main(String[] args){ try{ Socket so = new Socket(localhost ); Systemoutprintln(连接服务器); BufferedReader b=new BufferedReader(new InputStreamReader(Systemin)); OutputStream outStream = sogetOutputStream(); PrintWriter out = new PrintWriter(outStream); String s=null; while (true){ s=breadLine(); outprintln(Client:+s); outflush(); if(sequals(end)){ break; } } }catch (IOException e){ eprintStackTrace(); } } } |