我想知道如何根据数据创建套接字。例如,如果数据需要可靠性,它将创建一个带有SOCK_STREAM的套接字,因此它将选择TCP,否则如果它不需要任何可靠性,我将使用SOCK_DGRAM进行UDP。
可以使用switch或if-else条件实现吗?
我是这个主题的新手。如果有人为此提供了一个很好的资源,我真的很感激。
答案 0 :(得分:1)
根据您的评论,您将 不 通过读取实际数据流来决定创建哪种套接字类型,而是提前参考表格。那是对的吗?然后答案是肯定的,您可以使用某种分支来为您要连接的IP /端口创建适当的套接字/连接类型。
如果 你想要感知数据的类型,然后根据字节流包含的内容做出决定,那么你可以创建一个临时的INET套接字,读取足够的字节来确定内容,然后决定是否需要不同的协议来优化您的需求。确定最佳连接类型后,您可以决定保留当前连接,还是关闭它,并使用具有更优协议的套接字类型重新连接。步骤:
1 使用任何协议连接到服务器
2 分析数据内容的前几次读取以确定最佳套接字协议。
3 如果内容表明当前协议是最佳的,请保留它
4 如果内容表明当前协议不是最佳的,
关闭它,使用最佳插座类型重新打开。
这一切都假设您不知道您选择连接的服务器的数据类型 将提供。 这似乎不太可能 。你更有可能知道的类型 将为您连接的每个IP /端口地址提供数据,因此知道哪种类型的连接是最佳的。
答案 1 :(得分:-1)
您无法使用SOCK_STREAM
和SOCK_DGRAM
创建相同的套接字。你必须选择一个。 您决定协议,以及如何传输数据而不是数据。