recvfrom 返回 Invalid argument ?
recvfrom 在什么情况下会返回 Invalid argument ?
我已经将最后两个参数设置为 nullptr
了, 却还有这种情况发生
大致流程如下:
class socketTCP
{
public:
//...
private:
int fdTCP;
int fdUDP;
};
在这里bind
int socketTCP::Bind(const char* ip, int port)
{
struct sockaddr_in addr;
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
inet_pton(AF_INET, ip, &addr.sin_addr);
int res = bind(fdTCP, (struct sockaddr*)&addr, sizeof(addr));
res = bind(fdUDP, (struct sockaddr*)&addr, sizeof(addr));
return 0;
}
服务器创建临时 udp sockfd 发送向客户端发送信息
void socketBus::inform(const char* ip, int port, int* tmp)
{
int sockfd = socket(AF_INET, SOCK_DGRAM, 0);
struct sockaddr_in addr;
memset(&addr, 0, sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
addr.sin_addr.s_addr = inet_addr(ip);
sendto(sockfd, (void *)&buffer, sizeof(buffer), 0, (struct sockaddr*)&addr, sizeof(addr));
close(sockfd);
}
//客户端使用上面bind过的udp sockfd 接收数据
//getMysockfd(1)函数就是 return fdUDP
void socketBus::recvFrom(int* buf, int length)
{
int udpfd = getMysockfd(1);
int ret = recvfrom(udpfd, (void *)buf, length, 0, nullptr, nullptr);
}
然而在这个recvfrom会抛出Invalid argument
错误
请问是为什么呢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论