[英]C++ TCP socket garbage value
我的套接字通讯非常有效。 我唯一不确定的是为什么在消息末尾会得到一些垃圾值。 我发送的第一条消息的末尾包含一些额外的字符,此后的每条消息都是按预期的……是否有人对此有所了解?
发送:
CString string = "TEST STRING TO SEND";
char* szDest;
szDest = new char[string.GetLength()];
strcpy(szDest,string);
m_pClientSocket->Send(szDest,strlen(pMsg));
接收:(这使用Qt)
char* temp;
int size = tcpSocket->bytesAvailable();
temp = new char[size];
tcpSocket->read(temp,size);
读取后,您会丢失其\\ 0的温度,因为它实际上并未传输(可能不应该传输)
您可能需要稍微更改接收:
temp = new char[size + 1];
int realSize = tcpSocket->read(temp, size);
temp[realSize] = 0;
顺便说一句,在这个小片段中,使用QTcpSocket :: readAll()会更好。
我不知道这个CString
类,但是我在这里看到两个错误:
GetLength()
是否包含终止的NUL? 如果不是,则您的char
缓冲区比需要的字节小一个字节,并且strcpy
在缓冲区结束后正在破坏内存。 strlen(pMsg)
是szDest
以外的其他内容的长度。 这可能是造成问题的直接原因。 char
缓冲区似乎是不必要的:为什么不这样做
CString string = "TEST STRING TO SEND";
m_pClientSocket->Send(string, string.GetLength());
?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.