Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何基于数据创建套接字_C_Sockets_Tcp_Udp - Fatal编程技术网

C 如何基于数据创建套接字

C 如何基于数据创建套接字,c,sockets,tcp,udp,C,Sockets,Tcp,Udp,我想知道如何根据数据创建套接字。例如,如果数据需要可靠性,它将使用SOCK_流创建一个套接字,因此它将选择TCP,否则,如果它不需要任何可靠性,我将使用SOCK_DGRAM进行UDP 这可以通过使用开关或if-else条件来实现吗 我对这个问题不熟悉。如果有人为此提供了一个很好的资源,我真的很感激。您不能使用SOCK\u STREAM和SOCK\u DGRAM创建相同的套接字。你必须选择一个。您决定协议,以及如何传输数据,而不是您的数据。从您的评论来看,您似乎不会通过读取实际数据流,而是通过提前

我想知道如何根据数据创建套接字。例如,如果数据需要可靠性,它将使用SOCK_流创建一个套接字,因此它将选择TCP,否则,如果它不需要任何可靠性,我将使用SOCK_DGRAM进行UDP

这可以通过使用开关或if-else条件来实现吗


我对这个问题不熟悉。如果有人为此提供了一个很好的资源,我真的很感激。

您不能使用
SOCK\u STREAM
SOCK\u DGRAM
创建相同的套接字。你必须选择一个。您决定协议,以及如何传输数据,而不是您的数据。

从您的评论来看,您似乎不会通过读取实际数据流,而是通过提前参考表来决定创建哪种套接字类型。对吗?那么答案是肯定的,您可以使用某种分支来为您要连接的IP/端口创建适当的套接字/连接类型

但是,如果您想检测数据类型,然后根据字节流包含的内容做出决定,那么您可以创建一个临时INET套接字,读取足够的字节来确定内容,然后决定是否需要不同的协议来优化您的需要。一旦确定了最佳连接类型,您可以决定保持当前连接,或者关闭它,然后使用具有更优协议的套接字类型重新连接。步骤如下:

1使用任何协议连接到服务器。
2分析数据内容的前几次读取,以确定最佳套接字协议。
3如果内容表明当前协议是最优的,则保留它。
4如果内容表明当前协议不是最佳协议, 关闭它,使用最佳插座类型重新打开

这一切都假定您不知道要连接的服务器是什么类型的数据
将提供这似乎不太可能。您更有可能知道

将为您连接到的每个IP/端口地址提供数据,从而知道哪种类型的连接是最佳的

你能再解释一下吗?这是我的研究项目。我需要根据数据动态地决定协议。这就是我问这个问题的原因。@chathura2020如果您需要详细的套接字编程,您可以查看我的视频。它是用于Winsock编程的。谢谢,我也会看这个,但是你有什么想法来实现这一点吗?他不是在问“用SOCK_流和SOCK_DGRAM创建相同的套接字”。他正在询问如何创建一个或另一个。您能否回答如何在不首先获取数据的情况下以编程方式确定数据类型?这似乎是一个鸡和蛋的问题。通常,您会设计采集方法(协议)以适应特定数据,而不是相反。用谷歌搜索C的Sockets编程教程可以得到290万个答案。前9或10看起来非常相关。我有一个使用各种数据类型创建的表,用于这种情况(在该表中,我计算了数据类型的吞吐量、延迟和丢包)。因此,我需要根据表格检查合适的协议。使用该表,我们可以为特定数据选择最佳协议。有几种数据类型,如gps、wifi、地图数据等。我的研究项目是根据数据类型(使用该表)选择最佳协议。如果我们对每种数据类型使用相同的协议,它可能不是最佳协议。