Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 一台服务器绑定不同的端口_C_Sockets - Fatal编程技术网

C 一台服务器绑定不同的端口

C 一台服务器绑定不同的端口,c,sockets,C,Sockets,我是C语言的新手。现在我让我的服务器创建两个线程来监听两个不同的端口,它们都将调用bindaport->listen()->accept()。然后有两个客户端分别连接到这两个端口。然后这两个线程将accept()并生成两个文件描述符。我好奇的是,生成的文件描述符可能是相同的整数吗?文件描述符是不需要您解释的东西-因此知道这一点实际上“不关您的事”;) 在一个进程中,系统调用返回的文件描述符保证是唯一的。因此,两个线程将接收两个不同的整数(实际上,多线程根本不会影响此问题。结果与在主线程中打开两个

我是C语言的新手。现在我让我的服务器创建两个线程来监听两个不同的端口,它们都将调用
bindaport->listen()->accept()
。然后有两个客户端分别连接到这两个端口。然后这两个线程将
accept()
并生成两个文件描述符。我好奇的是,生成的文件描述符可能是相同的整数吗?

文件描述符是不需要您解释的东西-因此知道这一点实际上“不关您的事”;)


在一个进程中,系统调用返回的文件描述符保证是唯一的。因此,两个线程将接收两个不同的整数(实际上,多线程根本不会影响此问题。结果与在主线程中打开两个套接字的结果相同)。

它们可能是相同的整数,如果第一个线程将在第二个套接字上的accept创建新套接字之前关闭新套接字,则文件描述符将被回收。

描述符是每个进程的,而不是每个线程的。值得一提的是,描述符将在一个进程的生命周期内被回收。在我看来,没有“关闭的文件描述符”这样的东西——一旦文件关闭,描述符就变成一个任意整数。@托夫罗,我倾向于同意,尽管我不确定这有什么实际意义。