只是一个简单的背景。我愿意为应用程序的每个线程打开两个套接字。主线程有accept()调用来接受TCP连接。还有另外三个线程,它们都有accept()。问题有时在多线程环境中,客户端尝试在导致“连接被拒绝”错误的子线程中接受服务器调用之前进行连接。客户端不知道服务器何时准备连接 我不希望主线程套接字将任何控制信息发送到客户端,如“您现在可以连接到服务器”。为了避免这种情况,我在脑海中有两种方法 1.在连接拒绝错误退出之前,在客户端设置最大计数器(尝试)以连接到服务器。 2.一个单独的线程,其唯一的功能是接受服务器端的连接,作为除主线程外的所有线程连接的公共接受函数。C中的多个套接字避免连接拒绝错误
真的很感激知道是否有其他方法。谢谢
你已经事先调用'listen()'来设置传入连接的队列大小,对吧? (AFAIK,不听不接受根本不应该工作,但是因为你没有公开你正在使用哪个操作系统,它可能是一个决定“有帮助”的人,并且在第一次接受时做一个隐含的listen() ))。 –
Hello @HenningMakholm, 感谢您的评论。我添加了充足的队列大小的听力。另外,我所使用的操作系统是Linux 2.6.18.它只是主线程没有任何问题连接,但其他线程随机具有此连接拒绝错误。我不希望线程相互等待,因为它会挫败使用线程的目的和应用程序的目标。您的意见非常感谢 Thnks – user369823