如何区分客户端是否在服务器端使用TCP或UDP

seg*_*ult 8 c c++ sockets networking network-programming

我正在编写简单的客户端 - 服务器程序.

客户端使用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() .

那么,我如何在开始时区分/了解这一点,以便我可以进行适当的函数调用.

谢谢.

Mic*_*ker 17

数据包到达你面前,你不知道它是否是UDPTCP.

因此UDP,TCP如果您希望双向请求,则希望绑定到套接字和套接字.

一旦你这样做了,你就知道你收到数据包的套接字通过了哪种方式.


小智 6

创建套接字时,传递类型 - SOCK_STREAM(TCP)或SOCK_DGRAM(UDP)

所以这两种流量将在两个不同的套接字上.