java socket

Posted 飞龙dragon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java socket相关的知识,希望对你有一定的参考价值。

socket

Socket 单次连接实例

package test;
//: MultiJabberServer.java 
//A server that uses multithreading to handle  
//any number of clients. 
import java.io.*; 
import java.net.*; 

class ServeOneJabber extends Thread { 
private Socket socket; 
private BufferedReader in; 
private PrintWriter out; 
public ServeOneJabber(Socket s)  
   throws IOException { 
 socket = s; 
 in =  
   new BufferedReader( 
     new InputStreamReader( 
       socket.getInputStream())); 
 // Enable auto-flush: 
 out =  
   new PrintWriter( 
     new BufferedWriter( 
       new OutputStreamWriter( 
         socket.getOutputStream())), true); 
 // If any of the above calls throw an  
 // exception, the caller is responsible for 
 // closing the socket. Otherwise the thread 
 // will close it. 
 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); 
   } 
   System.out.println("closing..."); 
 } catch (IOException e) { 
 } finally { 
   try { 
     socket.close(); 
   } catch(IOException e) {} 
 } 
} 
} 

public class MultiJabberServe {   
static final int PORT = 5000; 
public static void main(String[] args) 
   throws IOException { 
 ServerSocket s = new ServerSocket(PORT); 
 System.out.println("Server Started"); 
 try { 
   while(true) { 
     // Blocks until a connection occurs: 
     Socket socket = s.accept(); 
     try { 
       new ServeOneJabber(socket); 
     } catch(IOException e) { 
       // If it fails, close the socket, 
       // otherwise the thread will close it: 
       socket.close(); 
     } 
   } 
 } finally { 
   s.close(); 
 } 
}  

} ///:~ 

 

socket 多个客服端编程实例

package test;
//: MultiJabberClient.java 
// Client that tests the MultiJabberServer 
// by starting up multiple clients. 
import java.net.*; 
import java.io.*; 
 
class JabberClientThread 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; 
  public static int threadCount() {  
    return threadcount;  
  } 
  public JabberClientThread(InetAddress addr) { 
    System.out.println("Making client " + id); 
    threadcount++; 
    try { 
      socket =  
        new Socket(addr, 5000); 
    } catch(IOException e) { 
      // If the creation of the socket fails,  
      // nothing needs to be cleaned up. 
    } 
    try {     
      in =  
        new BufferedReader( 
          new InputStreamReader( 
            socket.getInputStream())); 
      // Enable auto-flush: 
      out =  
        new PrintWriter( 
          new BufferedWriter( 
            new OutputStreamWriter( 
              socket.getOutputStream())), true); 
      start(); 
    } catch(IOException e) { 
      // The socket should be closed on any  
      // failures other than the socket  
      // constructor: 
      try { 
        socket.close(); 
      } catch(IOException e2) {} 
    } 
    // Otherwise the socket will be closed by 
    // the run() method of the thread. 
  } 
  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 { 
      // Always close it: 
      try { 
        socket.close(); 
      } catch(IOException e) {} 
      threadcount--; // Ending this thread 
    } 
  } 
} 
 
public class MultiJabberClient { 
  static final int MAX_THREADS = 40; 
  public static void main(String[] args)  
      throws IOException, InterruptedException { 
    InetAddress addr =  
      InetAddress.getByName("106.13.46.152"); 
    while(true) { 
      if(JabberClientThread.threadCount()  
         < MAX_THREADS) 
        new JabberClientThread(addr); 
      Thread.currentThread().sleep(100); 
    } 
  } 
} ///:~

以上是关于java socket的主要内容,如果未能解决你的问题,请参考以下文章

java代码在片段活动中不起作用

java 代码片段【JAVA】

# Java 常用代码片段

# Java 常用代码片段

创建片段而不从 java 代码实例化它

如何重构这个 Java 代码片段