gpt4 book ai didi

c - recvfrom 调用时出现段错误

转载 作者:行者123 更新时间:2023-11-30 19:41:34 25 4
gpt4 key购买 nike

我有一个 UDP 服务器实现,我在 recvfrom 调用中遇到段错误。

#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));

在此之前bind和connect都成功了。这是一个单线程进程。这个 recvfrom 调用有什么问题。我需要对 recvfrom 进行 SIGALRM 信号处理吗?truncate_size_t_to_int 用于将 size_t 转换为 int。

最佳答案

recvfrom() 可以返回 -1。如果不将 recv()/recvfrom()/recvmsg() 的结果存储到变量中,测试它是否为 -1,在 TCP 情况下测试它是否为 0,则无法编写正确的网络代码,并且只有当它为正时,您才能继续执行假设它的代码。

关于c - recvfrom 调用时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33384784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com