繁体   English   中英

TCP套接字到多个IP /端口

[英]TCP socket to multiple IP/port

我正在尝试编写一个连接到多个IP /端口的应用程序,而我遇到的问题是IP数量对我来说是未知的,因此一个部门可以使用它连接2个ips,而另一个部门可能连接到8个,因此它必须在运行时期间可配置,我在考虑使用线程或内部派生循环,但不确定哪一个更适合工作,希望有人可以在这里指导我,我在Linux下使用C。

例如,一个可以像这样运行它a.out ip1 port1 ip2 port2 ip3 port3,另一个可以像这样运行它a.out a.out ip1 port1

谢谢

我在这里看到四个设计选择,每个选择都有优点和缺点。 您的选择将在很大程度上取决于您的应用程序的确切功能。

  1. 1个进程/套接字(分支):这具有一个进程(例如SEGFAULT)中的致命错误不会影响其他进程的优点。 缺点包括以下事实:该方法更耗费资源,并且流程更难协调(例如,如果要进行动态负载平衡)。

  2. 1个线程/套接字(pthreads):优点是轻巧,线程易于协调,因为它们共享一个公共的内存空间。 缺点包括一个线程中的错误可能会使整个应用程序崩溃。

  3. 有限状态机:您可以在单个进程中使用单个线程,对所有套接字进行大量poll ,然后执行正确的(非阻塞)操作,即readwriteclose 我听说这在单个处理器上非常快,但是它没有利用多核体系结构,因此编程起来有些困难。

  4. 混合:选择以上三个中的任意一个并将其组合。 参见例如Apache服务器

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM