我正在写简单的客户端服务器程序。如何区分客户端是否使用TCP或UDP从服务器端
客户端使用UDP或TCP向服务器发送一些消息。服务器必须能够支持UDP和TCP。
如果客户端使用UDP发送消息,客户端的方法调用顺序为socket(),bind(),sendto(),recvfrom(),close()
,服务器中的方法调用顺序为socket(),bind(),sendto(),recvfrom(),close()
。
如果它使用TCP, 服务器中的呼叫顺序是 socket(),bind(),listen(),accept(),send(),recv(),close()
。 和在客户端是 socket(),bind(),connect(),send(),recv(),close()
在我的程序中,用户/客户端在开始时给出了选择他想要使用UDP或TCP的选择。所以,我的主要问题是如何在服务器端知道或区分,如果客户端使用TCP或UDP发送消息。如果它使用TCP,我必须调用listen(),accept(),send(),recv() ,如果它使用UDP,我不会调用listen(),accept(),而是调用sendto()和recvfrom )。
那么,我怎么才能区分/了解这一开始,以便我可以做出适当的函数调用。
谢谢。
那么,我应该在服务器端创建两个套接字,一个用于UDP,另一个用于TCP? – 2009-09-18 14:52:41
seg.server.fault,是的。 – 2009-09-18 15:15:58
@ seg.server.fault:我会推荐_not_在您的客户端代码中调用'bind()'。虽然它在技术上是可行的(并且在非常特定的情况下是必需的),但没有客户端'bind()'的默认行为通常是您在应用程序层需要的。 另外,请记住,你可以在UDP套接字上调用'connect()'。它没有进行任何握手,但是这意味着你可以使用'send/recv'而不是'sendto/recvfrom',这可能最终导致客户端逻辑变得更简单。 – Tom 2009-10-24 05:47:59