c++ WSAEFAULT错误发送整数

C++ WSAEFAULT error sending integer

本文关键字:整数 错误 WSAEFAULT c++      更新时间:2023-10-16

我正在尝试通过互联网发送一个整数。这个问题与出价端无关,因为当我用127.0.0.1发送整数给我自己时,也会出现这个问题。这是代码:

int res = send(Socket, (char*)refresh, sizeof(refresh), 0);

Refresh通常为100。res为-1,调用WsaGetLastError返回10014,WSAEFAULT。根据我的理解,这意味着我指定的大小与缓冲区的大小不同。刷新的大小如何与sizeof(refresh)不同?在另一边:

int dim = recv(Socket, (char*)&refresh, sizeof (refresh), MSG_WAITALL);

dim是4,这是正确的,但如果我检查刷新,它仍然是0。有线索吗?提前感谢。

WSAEFAULT表示buflen参数值的组合在一起工作不代表调用进程地址空间内的有效内存块。

(char*)refresh将整型的解释为内存地址,这是错误的。

(char*)&refresh传递整数的地址,这是正确的做法。

相关文章: