繁体   English   中英

C ++ TCP套接字垃圾值

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM