recvfrom call

时间:2015-10-28 06:59:34

标签: c sockets segmentation-fault qnx recvfrom

我有一个UDP服务器实现,我在recvfrom调用时遇到Segmentation fault。

#define SIZEOF      sizeof
#define PKTSIZE    65535

char tmp_buf[PKTSIZE];
struct sockaddr_storage tmp_from;
int tmp_fromlen = 0;
int tmp_bytes;
tmp_bytes = truncate_size_t_to_int(recvfrom(fd, tmp_buf,
                      SIZEOF(tmp_buf), 0,
                      (struct sockaddr *) &tmp_from,
                      (socklen_t *) &tmp_fromlen));

在此之前绑定和连接都成功。这是一个单线程进程。 这个recvfrom电话有什么问题。 我是否需要为SIGALRM执行recvfrom信号处理? truncate_size_t_to_int用于size_t到int。

1 个答案:

答案 0 :(得分:0)

recvfrom()可以返回-1。您无法在不将recv()/recvfrom()/recvmsg()的结果存储到变量中,将其测试为-1,在TCP的情况下将其测试为零,并且只有在它是肯定的情况下才能将{{1}}的结果存储到正确的网络代码中执行假定它的代码。