【问题标题】:TCP Concurrent Client/Server in C by using Fork() [duplicate]使用 Fork() 在 C 中的 TCP 并发客户端/服务器 [重复]
【发布时间】:2020-09-14 12:48:16
【问题描述】:

asdfg askjhgkasdhj gfskjd;hdgfk ;jasgdjkf hasdjkghf asdjkf hasdjkfgh klasdhdf jkasdjkf hdjksahf jklhdjkf asjkdhdf jkdlf ajsdhf jklashdf jaksdf hkjlasdjklf hasdhdf kdf kjlasdhasdf hkjadf ljkdf adf kjalsh

 else {
        printf("[-]Invalid command\n");
      }
    }

    bzero(buffer, SIZE);
  }

}

【问题讨论】:

  • 您没有绑定到客户端的端口,所以它只是选择一个随机端口。这是意料之中的(对于大多数客户端应用程序来说很常见)。
  • 那没关系?如果我在客户端上绑定我的端口会更好吗?但既然是并发程序,那不是问题吗?
  • 如果最好不要绑定。服务器不关心发起请求的端口。绑定到客户端的特定端口也意味着一次只能在该计算机上运行一个客户端。
  • 你的叉子看起来有点不对劲。你关闭 sockfd。这将阻止服务器接受更多连接。另外,戒烟真的戒了吗?看起来 while 循环将永远运行。
  • 错过了break语句,所以quit会跳出循环,但你应该关闭两端的socket。

标签: c sockets client-server tcpclient


【解决方案1】:

你有几个问题:

-Don't close sockfd, this will prevent further connections from being accepted on the server
-The socket should be closed on both ends in the quit case
-The fact that the client side uses a random port is fine.  Nothing needs to be changed there

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 2018-03-06
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    • 2019-02-26
    相关资源
    最近更新 更多