对于我的回显服务器/客户端,当我的客户端与我的服务器通信时,服务器回显的末尾总会有一些奇怪的额外字符。
客户(发送):
string input;
while(srnet>0&&start){
cout<<"[Enter to Send]..."<<endl;
getline(cin,input);
if(!strcmp(input.c_str(),"quit")) break; else
srnet=send(conn, input.c_str(),input.length(), 0 );
}
客户(接收)
while(rnet>0&&start){
char* recvbuf=new char[DEFAULT_BUFLEN];
rnet = recv(conn, recvbuf, recvbuflen, 0);
if (rnet > 0) printf("[RECR %s] %s\n", ip.c_str(),recvbuf);
delete recvbuf;
}
服务器:
rnet = recv(conn, recvbuf, recvbuflen, 0);
if (rnet > 0) {
srnet=send(conn, recvbuf, rnet, 0 );
if ( srnet== SOCKET_ERROR) {
printf("[COMM] send failed with error: %d\n", WSAGetLastError());
closesocket(conn);
break;
}
输出:
dadada
[Enter to Send]...
[RECR localhost:4666] dadadap
fdsfdfd
[Enter to Send]...
[RECR localhost:4666] fdsfdfd
asdsa
[Enter to Send]...
[RECR localhost:4666] asdsap
asdsa
[Enter to Send]...
[RECR localhost:4666] asdsap
aaa
[Enter to Send]...
[RECR localhost:4666] aaa
asdsa
[Enter to Send]...
[RECR localhost:4666] asdsap
请注意,额外的 p 总是附加到输入“asdsa”每次。而像“aaa”这样的其他输入很好。
有任何想法吗?