2012-10-15 49 views
1

我有一個C++客戶端和一個Java服務器。我只是試圖從客戶端發送一個字符串「測試」。這裏是我的相關的Java代碼,從客戶端接收空白行

Socket clientSocket = serverSocket.accept(); 
      BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 
      String line = ""; 
      while((reader.readLine()) != null) { 
       System.out.println("Recieved Something. " + line.length()); 
       System.out.println(line); 
      } 

這裏是我的輸出(有收到東西后,一個空行)

Recieved Something. 0 

Recieved Something. 0 

以及C++代碼(不完全知道什麼你們需要的,因爲我是新來的C++

SOCKET Socket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); 

    if(Socket==INVALID_SOCKET) 
    { 
     printf("Winsock error - Socket creation Failed!\r\n"); 
     WSACleanup(); 
     return 0; 
    } 


    struct hostent *host; 
    if((host=gethostbyname("localhost"))==NULL) 
    { 
     printf("Failed to resolve hostname.\r\n"); 
     WSACleanup(); 
     return 0; 
    } 

    SOCKADDR_IN SockAddr; 
    SockAddr.sin_port= htons(2501); 
    SockAddr.sin_family= AF_INET; 
    SockAddr.sin_addr.s_addr= *((unsigned long*)host->h_addr); 

    if(connect(Socket,(SOCKADDR*)(&SockAddr),sizeof(SockAddr))!=0) 
    { 
     printf("Failed to establish connection with server\r\n"); 
     WSACleanup(); 
     return 0; 
    } 
    string toSend = "Test\n"; 
    send(Socket,toSend.c_str(), strlen(toSend.c_str()), 0); 

那麼,爲什麼我沒有收到測試字符串?

感謝

回答

3

您需要分配行varible一些值。

使用

while((line = reader.readLine()) != null) 
+0

哇,剛剛看到..我已經做了這一千倍的java方。 – Austin

1

不保存的任何地方readLine的結果。您可能需要將其分配給line變量。