1

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);

では、なぜテスト文字列を受信しないのですか?

ありがとう

4

2 に答える 2

3

行変数に何らかの値を割り当てる必要があります。

使用する

 while((line = reader.readLine()) != null)
于 2012-10-15T03:23:02.587 に答える
1

readLineどこにも結果を保存しません。lineそれを変数に割り当てたいと思うかもしれません。

于 2012-10-15T03:23:20.577 に答える