如何在Linux(内核3.16)上的一个进程中的多个线程中接受相同ip:port
的TCP连接?
我可以为每个线程使用这个socket-acceptor(即4个线程中的4个socket-acceptors)吗?
即。每个线程都有自己的接受器套接字,具有相同的ip_addr:port
,而不是为所有线程共享一个接受器套接字。
我应该使用SO_REUSEPORT
和SO_REUSEADDR
吗?
答案 0 :(得分:0)
我在编写服务器时做了同样的事情。您有一个main方法接受到计算机的传入连接,以及线程来处理每个连接。每次新计算机连接到服务器时,都会创建一个新的连接对象。从main方法中,您必须为每个连接生成一个新线程,并将该连接对象作为参数传递给该线程。例如,这是一个抽象:
void acceptConnections()
{
while(true)
{
connection = socket.accept()
createNewThread(threadMethod, connection)
}
}
在您生成的主题中,您可以像正常一样从连接对象接收数据。如果不知道你在使用什么语言,我就无法提供更多细节
答案 1 :(得分:0)
答案是: