In my experience much of the complexities a newcomer faces in the Java world is understanding extraneous stuff like handling exceptions or formatting data etc.在我的經驗,大部分的複雜新手面臨著在Java的世界是要了解外在的東西一樣,異常處理或格式數據等。

Today I was requested for the nth time (n -> infinity) how to write a simple socket client and server (actually debug one).今天,我被要求為第n項的時間( -> “至無限遠)如何寫一個簡單的S ocket客戶端和服務器端(其實調試一) 。 Java tutorial is good but it is not simple. Java的補習是好的,但它並不簡單。 This is a very simple example of a Echo server and client.這是一個很簡單的例子,一個回波服務器和客戶端。 It minimally handles extraneous stuff to give simplicity to the procedure.它的微處理外在的東西,讓簡單到程序。

EchoClient.java echoclient.java

 import java.net.*; import java.io.*; // Connects to port 6500 of specified host, // sends the message and prints the reply public class EchoClient {     // Run as: java EchoClient hostname message     public static void main(String args[]) throws Exception {         Socket socket = new Socket(args[0], 6500);         BufferedReader br = new BufferedReader(                 new InputStreamReader(socket.getInputStream()));         PrintStream ps = new PrintStream(socket.getOutputStream());         ps.println(args[1]); // Write message to socket         // Print response from server         System.out.println(”Received: ” + br.readLine());         socket.close();     } }進口java.net .* ;進口java.io. * ; / /連接到端口6500的指定的主機, / /發送郵件和印刷品的答复市民階層echoclient ( / /運行: Java語言echoclient主機的信息,公共靜態無效的主要(字符串args [ ] )拋出例外(插座插座=新的Socket ( args [ 0 ] , 6500 ) ; bufferedreader溴=新bufferedreader (新inputstreamreader ( socket.getinputstream ())); printstream的PS =新printstream ( socket.getoutputstream ( ) ) ; ps.println ( args [ 1 ] ) ; / /寫信息,以插座/ /打印到的伺服器回應system.out.println ( “收到: ” + br.readline ( ) ) ; socket.close ( ) ; ) ) 

EchoServer.java echoserver.java

 import java.net.*; import java.io.*; // Listens for connection on port 6500, // receives messages and echoes them back public class EchoServer {     public static void main(String args[]) throws Exception {         ServerSocket server = new ServerSocket(6500);         Socket socket = null;         while(true) {             socket = server.accept();             BufferedReader br = new BufferedReader(                     new InputStreamReader(socket.getInputStream()));             PrintStream ps = new PrintStream(                     socket.getOutputStream());             ps.println(br.readLine()); // Echo input to output             socket.close();         }     } }進口java.net .* ;進口java.io. * ; / /偵聽方面對港口6500 , / /接收郵件和呼應他們回到市民階層echoserver (公共靜態無效的主要(字符串args [ ] )拋出例外( serversocket服務器=新serversocket ( 6500 ) ;插座插座=空;而(真實) (插座= server.accept ( ) ; bufferedreader溴=新bufferedreader (新inputstreamreader ( socket.getinputstream ())); printstream的PS =新printstream ( socket. getoutputstream ( ) ) ; ps.println ( br.readline ( ) ) ; / /迴聲輸入到輸出的socket.close ( ) ; ) ) ) 

In the end it is a simple thing done simply.在年底,這是一個簡單的事情做簡單。 It doesn’t cover all the bases like clean exception handling or handling connections in parallel.它並不包括所有基地一樣,乾淨的例外處理或處理連接在平行。 Those should be left as later exercises when the developer is feeling more at ease with the language.這些應留待稍後作為演習時,開發者是感覺更放心與語言。