【问题标题】:Multiple ports server for Server/Client program in CC中服务器/客户端程序的多端口服务器
【发布时间】:2022-01-03 19:42:02
【问题描述】:

我想用 C 语言创建一个服务器/客户端程序,其中服务器有 2 个端口,每个端口都做不同的事情,我不知道如何处理。我想过为每个端口创建 2 个不同的套接字,但不知道在此之后该怎么做。无限循环并检查每个套接字是否有客户端连接到其中一个或什么是解决此问题的更好方法。提前致谢!

【问题讨论】:

  • 你想创建 2 个线程,每个端口 1 个。当你打开socket开始监听并调用accept()函数时,线程会阻塞直到有连接,不需要循环。

标签: c sockets unix tcp


【解决方案1】:

不知道怎么处理。

有两种常见的方法:

  • 为每个端口提供单独的线程
  • epoll

如果不同端口上的实际工作完全不相关且不需要协调,则每端口线程可能是更好的模型。

【讨论】:

  • 我已经使用线程来处理客户,我想知道这是否会让事情变得尴尬。我检查了 epoll,我想问我是否可以像数组一样创建 ev 并为 ev[0] 和 ev[1] 执行该操作。另外,如果我检查每个套接字 if (events[n].data.fd == listen_sock{1,2}) 上的每个其他端口,我都会调用负责每个端口的函数,对吗?
  • @BalentinValtatescu 是的,你可以。您需要使用EPOLL_CTL_ADDepoll_ctl 进行两次单独调用,但它并不关心您的数据是否在数组中。
  • Employed Russian 我说我可以访问两个端口,但问题是我不能同时使用它们,第一个使用的端口是打开的,并且一直在等待新客户端,我可以建立与其他端口的连接,但如果我要求数据或其他任何东西都没有响应。你知道如何解决这个问题吗?
  • @BalentinValtatescu 如果没有stackoverflow.com/help/mcve,就无法为您提供帮助
  • 我无法添加特定部分。服务器:(codepile.net/pile/yrXpPvrd) 和客户端:(codepile.net/pile/wBAqM7By) 在我将部件添加到我的主程序之前这是基本的我尝试切换 if/else 或只是在 if 中使用管理功能但没有任何改变。我可能走错了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-17
  • 1970-01-01
  • 2015-02-19
  • 1970-01-01
  • 2011-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多