我想通过互联网发送一个整数。问题不是bid-endian相关,因为当我使用127.0.0.1将整数发送给自己时也会出现问题。这是代码:
int res = send(Socket, (char*)refresh, sizeof(refresh), 0);
刷新通常为100. res为-1,调用WsaGetLastError返回10014, WSAEFAULT 。 根据我的理解,这意味着我指定的大小不同于缓冲区的大小。如何刷新大小与sizeof(刷新)不同? 另一方面:
int dim = recv(Socket, (char*)&refresh, sizeof (refresh), MSG_WAITALL);
dim 是4,这是对的,但是如果我检查刷新它仍然是0。 任何线索?提前致谢。
答案 0 :(得分:0)
WSAEFAULT
表示buf
和len
参数值的组合在一起并不代表调用进程的地址空间中的有效内存块。
(char*)refresh
传递被解释为内存地址的整数的值,这是错误的。
(char*)&refresh
传递整数的地址,这是正确的做法。