我正在使用 UDP 协议编写服务器-客户端应用程序。当我运行时,recvfrom
我收到以下错误,我真的不明白为什么:
recvfrom:无效的参数
这是我假设与此错误相关的代码:
#define CLIE_PORT 5499
#define MAXMSGSIZE (1024 * 1024) // Max message size is 1MB
#define CLIE_PORT 5499
#define PACKETSZ 7
我rcv_string
以这种方式运行:
char *result = malloc(MAXMSGSIZE);
struct sockaddr_in sndaddr;
rcv_string((uint16_t) CLIE_PORT, &result, &sndaddr);
这是rcv_string
(里面有对 的调用recvfrom
)的实现。
int rcv_string(uint16_t port, char **return_string, struct sockaddr_in *sndaddr) {
// [...]
memset((char *) sndaddr, 0, sizeof(*sndaddr));
(*sndaddr).sin_family = AF_INET;
(*sndaddr).sin_port = htons(port);
int reuse = 1;
if (setsockopt(sockfd_in, SOL_SOCKET, SO_REUSEADDR, (const char *) &reuse, sizeof(reuse)) < 0) {
perror("setsockopt");
return -1;
}
if (bind(sockfd_in, (struct sockaddr *) sndaddr, sizeof(*sndaddr)) < 0) {
perror("bind");
return -1;
}
socklen_t len;
if ((recvfrom(sockfd_in, buff, PACKETSZ + 1, 0, (struct sockaddr *) sndaddr, &len)) < 0) {
perror("recvfrom");
return -1;
}
// [...]
}
可能是什么问题呢?(如果您认为我应该上传更多代码,请告诉我!)