1

我正在制作一个程序,该程序不断检查通过套接字接收和发送数据,并且我有全局声明的套接字,它在 2 个线程函数中使用。我在 main() 中设置了套接字,一个线程使用套接字使用 recvfrom 并且工作正常,但是每当我尝试调用 sendto 时,它都会返回一个值 < 0,这让我感到困惑,因为 recvfrom 工作正常。

4

2 回答 2

0

套接字是否允许在 C 中是全局的?

是的。

于 2018-05-05T15:39:51.950 回答
0

套接字只是一类文件描述符,在 C 中它由一个int值表示。这里重要的是您为套接字存储的值(在您第一次调用时填充,socket(2)直到您在内核中使用释放它时才会更改close(2))。作为系统提供的值,它一直保持到您释放它close(2)或进程终止(以任何方式)。您存储该值的位置(全局、静态或自动变量)并不介意。

所以最后答案是肯定的。

于 2018-05-06T15:08:34.450 回答