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



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

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

是的。

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

所以最后答案是肯定的

最新更新