我正在尝试为我的学校项目制作一个使用winsock将信息(字符集)发送到另一个程序(客户端/服务器)的程序。
我发送的消息在另一端收到,但最后有额外的字符。IE 如果我想发送“hallo”,我会收到“hallod3”或一些随机符号。
PS:消息是从Client发送到Server的
这是我在服务器上的代码:
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'。
这里可能是什么问题?