代码之家  ›  专栏  ›  技术社区  ›  Ahmed

客户机数据如何转到服务器的子线程而不是原始侦听线程?

  •  0
  • Ahmed  · 技术社区  · 6 年前

    服务器监听端口21,并且能够同时为来自客户端(C1、C2等)的多个传入连接提供服务,而不阻塞它们

    因此,当客户机C1在端口21上连接到服务器S时,服务器接受主线程上的连接,并创建一个新线程TH1,让它处理客户机请求,同时主线程开始再次向端口21列出以接受新客户机。

    C1接收数据并将更多数据发送到端口21上建立的同一连接上的服务器。

    当服务器的主线程继续侦听端口21时,该数据到达服务器并由线程Th1接收。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Serge    6 年前

    您需要提供在客户端和服务器之间发送的具有唯一 client id . 你需要一个可辨别的握手包。

    当服务器收到 hand-shake 包,它启动一个线程,从包中给它客户端id,并继续侦听端口21。

    conditional variable .

    当服务器的主线程得到 data 数据包,它发布 id 条件变量

    别忘了随时终止线程 good-bye 包或在一个 timeout .

    推荐文章