【问题标题】:Multiple sockets for clients to connect to供客户端连接的多个套接字
【发布时间】:2011-03-22 23:05:29
【问题描述】:

是否可以有多个套接字,可以在一个程序中通过 TCP 或 UDP?

例如: SocketOne:4567端口的TCP套接字; socketTwo:8765 端口的 TCP 套接字; socketThree:7643 处的 UDP 套接字。

家庭将是 AF_INET,地址将是 INADDR_ANY。

我绑定并监听 TCP,只绑定 UDP。

让我怀疑是否要这样做的是,我如何在每个套接字处一起等待客户端。

我知道下面的代码不起作用,但我不知道还有什么或如何解释我想说的话。

while (1)  
{   
    connected = accept(socketOne, (struct sockaddr *)&client_addr,&sin_size);

    connected = accept(socketTwo, (struct sockaddr *)&client_addr,&sin_size);

    bytes_read = recvfrom(socketThree,recv_data,1024,0,(struct sockaddr *)&client_addr, &addr_len);

}

【问题讨论】:

  • "在一个程序中是否可以有多个套接字,可以通过 TCP 或 UDP 连接?" - 是的当然。但是您的代码没有说明您要问什么 - 什么(例如)是“socketThree”?

标签: c sockets winsock


【解决方案1】:
【解决方案2】:

选择

【讨论】:

    【解决方案3】:

    有一些现实世界的例子。 FTP 有一个控制和数据端口,它们都使用 TCP,多媒体应用程序将使用 SIP 或 RTSP 连接进行控制 (TCP),并为每个接收到的数据流使用多个 RTP 和 RTCP 端口 (UDP)。

    select 或 poll 在 unix 上使用,在 Windows 上,有 OVERLAPPED apis 可以非抢先式地执行此操作。或者,这可以通过多个线程来完成。

    【讨论】:

      猜你喜欢
      • 2019-11-19
      • 2015-02-08
      • 1970-01-01
      • 2016-05-09
      • 2016-01-05
      • 1970-01-01
      • 2011-07-20
      • 2021-12-22
      • 1970-01-01
      相关资源
      最近更新 更多