1

Re: このクライアント <-> サーバー (foodrequest-foodinfo シナリオ) 成功したクライアント サーバー接続 sock_fd に受信を送信しようとしています。このループでは、最初の情報が返されますが、次の反復はキーボード入力、つまり readInFood() で停止します。バッファの処理方法に問題はありますか? もしくはそうでないか。

RESPONSE_BUFFER = 2200;
INPUT_BUFFER = 100;
int numbytes;
char foodType[INPUT_BUFFER];
char foodResponse[RESPONSE_BUFFER];

do {

    //send a message to server
    if (send(sock_fd, readInFood(foodType), INPUT_BUFFER, 0) == -1)
        perror("send");

    //receive the message
    if ((numbytes = read(sock_fd, foodResponse, RESPONSE_BUFFER)) == -1) {
        perror("receive");
        exit(EXIT_FAILURE);
    }
    //end the buffer string
    foodResponse[numbytes] = '\0';

    //print the buffer
    printf("\nThis is the information you require: %s", foodResponse);

} while (foodType[0] != 'q' || foodType[0] != 'Q');
4

1 に答える 1

1

私の推測では、より多くの情報を期待しているか、他に何も取得していないため、ソケットがブロックされていると思われます。その場合、perror() は起動しませんが、プログラムは情報を待ち続けます。

于 2012-11-19T20:09:25.187 に答える