2012-07-15 33 views
1

我有一個示例TCP客戶端和服務器應用程序,我想運行,但我不知道如何運行它們。它說我需要在一臺主機上編譯客戶端程序,而在另一臺主機上編譯服務器應用程序,但我不知道如何在有一臺計算機時執行此操作。我知道這很簡單,但我需要一點幫助才能讓我開始。如何測試示例TCP套接字程序

下面是示例TCP服務器應用程序:

import java.io.*; 
import java.net.*; 

class TCPServer { 

public static void main(String argv[]) throws Exception 
{ 
    String clientSentence; 
    String capitalizedSentence; 

    ServerSocket welcomeSocket = new ServerSocket(6790); 

    while(true) { 

       Socket connectionSocket = welcomeSocket.accept(); 

     BufferedReader inFromClient = 
     new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); 

     DataOutputStream outToClient = 
     new DataOutputStream(connectionSocket.getOutputStream()); 

     clientSentence = inFromClient.readLine(); 

     capitalizedSentence = clientSentence.toUpperCase() + '\n'; 

     outToClient.writeBytes(capitalizedSentence); 
    } 
} 
} 

這裏是樣品的TcpClient應用

import java.io.*; 
import java.net.*; 
class TCPClient { 

    public static void main(String argv[]) throws Exception 
    { 
     String sentence; 
     String modifiedSentence; 

     BufferedReader inFromUser = 
      new BufferedReader(new InputStreamReader(System.in)); 

     Socket clientSocket = new Socket("10.0.1.2", 6790); 

     DataOutputStream outToServer = 
      new DataOutputStream(clientSocket.getOutputStream()); 

     BufferedReader inFromServer = 
      new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 

     sentence = inFromUser.readLine(); 

     outToServer.writeBytes(sentence + '\n'); 

     modifiedSentence = inFromServer.readLine(); 

     System.out.println("FROM SERVER: " + modifiedSentence); 

     clientSocket.close(); 

    } 
} 

是什麼在這裏下車?

這正是我做

step1

step2

這是我第一次使用Eclipse,所以我可以做什麼不對勁的地方。我通常使用DrJava,但由於某種原因,這並不能讓我同時運行。

回答

3

幾乎所有的套接字程序都可以在同樣的計算機上運行兩半。只需在一個窗口中運行服務器,在另一個窗口中運行客戶端,並指定連接地址127.0.0.1(表示localhost,您的計算機)。

+0

我一定在做錯事,然後因爲當我這樣做時什麼都沒有發生。如果我運行服務器應用程序,然後客戶端應用程序,它只是站在那裏.... – 2012-07-15 21:34:43

+0

對不起,當你只是說「什麼都沒有發生」,我不能幫助調試你的程序。如有疑問,打印出來更多。 – 2012-07-15 21:35:48

+0

我用代碼更新了我的帖子。當我現在運行TCPServer程序時,出現以下錯誤:線程「main」中出現異常java.net.ConnectException:連接被拒絕 \t at java.net.PlainSocketImpl.socketConnect(Native Method) \t at java.net.PlainSocketImpl.doConnect (PlainSocketImpl.java:351) \t在java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213) \t在java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) \t在java.net.SocksSocketImpl。連接(SocksSocketImpl.java:432) \t at java.net.Socket.connect(Socket.java:529) \t at java.net.Socket.connect(Socket.java:478) – 2012-07-15 21:38:01

0

對於任何使用此代碼的人,我只是介紹了該程序,並看到連接已成功建立(如果更改爲適當的IP,如'localhost')。然而,TCPServer和TCPClient都會首先執行readLine,這樣它們都會被卡住,等待輸入永遠不會到來。改變其中一個首先寫東西。