1

そこで、クライアントが文字列を送信し、サーバーがその文字列を受信して​​「Back」という単語を含めて返信するように、サーバーとクライアント (udp) 間のソケット接続を作成するこのプログラムを作成しました。問題は、最初に実行したときに機能しないことです。クライアントはエコーされた文字列を出力しません。最初に実行したときに受信しないことはほぼ確実です。

ただし、プログラムを終了して同じコマンドで再度実行すると、動作し、その後は実行するたびに動作し続け、想定どおりにすべてをエコーバックします。以下は、コード行を送受信するクライアントとサーバーです。

クライアント側:

len = sendto (s,string,strlen(string),0,(struct sockaddr*)&servAddr, sizeof (servAddr));
// Recieve echo string
recvfrom (s,buffer,sizeof(buffer),0,NULL,NULL);
buffer[len+5] = '\0';
// Print and verify echoed string
fputs(buffer,stdout);

サーバ側:

len =    recvfrom (s,buffer, sizeof(buffer), 0, (struct sockaddr*)&clntAddr, &clntAddrLen);

    buffer[len]   =' ';
    buffer[len+1] ='B';
    buffer[len+2] ='a';
    buffer[len+3] ='c';
    buffer[len+4] ='k';
    buffer[len+5] = '\0';
      // Send String
    sendto (s,buffer, strlen(buffer)+1, 0, (struct sockaddr*)&clntAddr, sizeof(clntAddr));

バインドされ、すべてが正しく機能しています。最初だけ失敗するのはなぜですか?

あなたの助けに感謝。

4

0 に答える 0