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

时间:2018-05-05 02:34:19

标签: c sockets global-variables sendto recvfrom

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

2 个答案:

答案 0 :(得分:0)

  

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

答案 1 :(得分:0)

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

所以最后答案是