从客户收到空白行

时间:2012-10-15 03:21:19

标签: java c++ networking

我有一个C ++客户端和一个Java服务器。我只是想从客户端发送一个字符串“Test”。这是我的相关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);

那为什么我没有收到测试字符串?

由于

2 个答案:

答案 0 :(得分:3)

您需要为行变量赋值。

使用

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

答案 1 :(得分:1)

您不会将readLine的结果保存在任何地方。您可能希望将其分配给line变量。