学校のプロジェクトで winsock を使用して、情報 (文字セット) を別のプログラム (クライアント/サーバー) に送信するプログラムを作成しようとしています。
私が送信したメッセージは反対側で受信されますが、末尾に余分な文字が含まれています. IE 「ハロー」を送信したい場合、「hallod3」またはいくつかのランダムなシンボルを受け取ります。
PS: メッセージはクライアントからサーバーに送信されます
サーバー上の私のコードは次のとおりです。
char recvbuf[DEFAULT_BUFLEN];
int recvbuflen = DEFAULT_BUFLEN;
do {
iResult = recv(ClientSocket, recvbuf, recvbuflen, 0);
if (iResult > 0) {
ShowMessage(recvbuf);
}
else if (iResult == 0)
ShowMessage("Connection closing...\n");
else {
ShowMessage("recv failed with error: %d\n", WSAGetLastError());
closesocket(ClientSocket);
WSACleanup();
ShowMessage("send failed");
}
} while (iResult > 0);
クライアントは次のとおりです。
char sendbuf[DEFAULT_BUFLEN];
iResult = send( ConnectSocket, sendbuf, (int)strlen(sendbuf), 0 );
if (iResult == SOCKET_ERROR) {
ShowMessage("send failed with error: %d\n", WSAGetLastError());
closesocket(ConnectSocket);
WSACleanup();
ShowMessage("send failed");
}
DEFAULT_BUFLEN が定義されています (メッセージの長さ)。ShowMessage() は、文字列を取得して表示する VCL コンポーネント (私は Borland C++ Builder を使用しています) の関数です。
PS: クライアントで文字列 'sendbuf' を確認しましたが、余分な文字はありません。文字列の末尾に '\0' を追加することさえあります。
ここで何が問題なのですか?