2012-09-05 130 views
1

我對套接字有點新,我正在嘗試編寫一個程序,我基本上可以將一些簡單的請求從客戶端程序發送到服務器程序。現在我只想在客戶端有1或2個選項供用戶選擇。例如,如果用戶在客戶端選擇「選項1」,則服務器發回一條消息「您選擇選項1」等等,但我無法弄清楚如何讀取從客戶端發送的服務器上的輸入。套接字通信服務器/客戶端

客戶端代碼:

Socket socket = null; 

    try 
    { 
     System.out.println("Connecting to Server"); 

     socket = new Socket("192.168.0.104", 7003); 
     socket.setSoTimeout(10000); 
     System.out.println("Connected"); 

     InputStreamReader input = new InputStreamReader(socket.getInputStream()); 
     BufferedReader buffer = new BufferedReader(input); 
     PrintWriter print = new PrintWriter(socket.getOutputStream(), true); 

     String line = buffer.readLine(); 

     //Not Sure which buffer to user here    
     System.out.println("Option 1"); 
     System.out.println("Option 2"); 
     System.out.println("Option 3"); 
     } 

     System.out.println("Closing Client Connection"); 
     buffer.close(); 
     input.close(); 
     print.close(); 
     socket.close(); 
     System.exit(0); 

服務器代碼:

ServerSocket serverSock = null; 
    Socket standSock = null; 

    try 
    { 
     serverSock = new ServerSocket(7003); 
     standSock = serverSock.accept(); 

     InputStreamReader input = new InputStreamReader(standSock.getInputStream()); 
     BufferedReader read = new BufferedReader(input); 
     PrintWriter print = new PrintWriter(standSock.getOutputStream(), true); 

     String dateTime = (Calendar.getInstance()).getTime().toString(); 
     print.println("You're connected to the Server at: " + dateTime); 
     print.println("Type Q to disconnect"); 

     String line = read.readLine(); 
     //Not sure what to do here 
     System.out.println("Client: " + line); 
     print.println("Server" + line); 


     System.out.println("Closing Server Connection"); 
     read.close(); 
     input.close(); 
     print.close(); 
     standSock.close(); 

我需要在客戶爲例一個用戶輸入兩個不同的BufferedReaders和一個插座?真的很困惑這部分。

感謝

回答

1

客戶端需要讀取用戶的輸入,並將其發送到服務器。服務器需要從套接字讀取並回應套接字。客戶端必須從套接字讀取並向用戶發送適當的消息。服務器不會直接通過客戶端向用戶讀取或寫入任何內容。

+0

因此,在客戶端,我需要兩個緩衝區,一個讀取用戶的輸入,另一個讀取來自Socket的輸入。 – Nick

+0

正確。在客戶端中,您還需要能夠寫入套接字和System.out。 –

+0

我該怎麼做? – Nick

相關問題