this is a extra element for clear the floated element
Java中SOCKET通讯源码
  • 12/31
  • 2008
多线程 | Java 2948 次查看
  //ServeOneSocket.java 服务端源程序

  import java.io.*;

  import java.net.*;

  public class ServeOneSocket extends Thread {

  private Socket socket;

  private BufferedReader in;

  private PrintWriter out;

  private String content;

  /**

  * Constructor

  */

  public ServeOneSocket(Socket s,String c)throws IOException {

  socket=s;

  content=c;

  in=new BufferedReader(

  new InputStreamReader(

  socket.getInputStream()));

  //enable auto-flush

  out=new PrintWriter(

  new BufferedWriter(

  new OutputStreamWriter(

  socket.getOutputStream())),true);

  start();//calls run()

  }

  public void run(){

  try{

  while (true){

  String str=in.readLine();

  if (str.equals("END"))break;

  System.out.println("Echoing:"+str);

  out.println(str);

  out.println(content);

  }

  System.out.println("Closing...");

  }catch(IOException e){

  }finally{

  try{

  socket.close();

  }catch(IOException e){}

  }

  }

  }

  //SocketClientThread.java 客户端源程序

  import java.net.*;

  import java.io.*;

  class SocketClientThread extends Thread{

  private Socket socket;

  private BufferedReader in;

  private PrintWriter out;

  private static int counter=0;

  private int id=counter++;

  private static int threadcount=0;

  final int port=8110;

  public static int threadCount(){

  return threadcount;

  }

  public SocketClientThread(InetAddress addr){

  System.out.println("Making client:"+id);

  threadcount++;

  try{

  socket=new Socket(addr,port);

  }catch(IOException e){

  }

  try{

  in=new BufferedReader(

  new InputStreamReader(

  socket.getInputStream()));

  out=new PrintWriter(

  new BufferedWriter(

  new OutputStreamWriter(

  socket.getOutputStream())),true);

  start();

  }catch(IOException e){

  try{

  socket.close();

  }catch(IOException e2){}

  }

  }

  public void run(){

  try{

  for (int i=0;i<25;i++){

  out.println("Client:"+id+":"+i);

  String str=in.readLine();

  System.out.println(str);

  }

  out.println("END");

  }catch(IOException e){

  }finally{

  try{

  socket.close();

  }catch(IOException e){}

  threadcount--;

  }

  }

  }

  public class MultiSocketClient {

  static final int MAX_THREADS=10;

  /**

  * main

  * @param args

  */

  public static void main(String[] args)throws IOException,InterruptedException {

  InetAddress addr=InetAddress.getByName(null);

  while (true){

  if (SocketClientThread.threadCount()
  new SocketClientThread(addr);

  Thread.currentThread().sleep(100);

  }

  }

  }