与TCP套接字(sock_stream)和UDP套接字(数据报)建立连接有什么区别。到目前为止,我认为喜欢 我们可以使用connect函数仅为TCP套接字创建连接。但是,可以与UDP套接字建立连接。 到目前为止,我还不知道如何与UDP套接字建立连接。这两者有什么区别?
int tcpsock = socket(AF_INET, SOCK_STREAM, 0);
connect(tcpsock,(struct sockaddr*)&sa,sizeof(sa));
int udpsock = socket(AF_INET, SOCK_DGRAM, 0);
connect(udpsock,(struct sockaddr*)&sa,sizeof(sa)); // How ?
UDP是无连接的。所以,如果我们使用UDP如何建立类似于TCP的连接?
我已经知道TCP和UDP之间的区别。我怀疑是,UDP是 无连接,那么connect函数如何返回成功?
答案 0 :(得分:1)
UDP(a)中的connect()
函数告诉UDP在哪里发送所有数据报,因此您可以使用send()
而不是sendto()
,并且(b)充当传入的过滤器数据报,因此您可以使用recv()
代替recvfrom()
。它在网络上没有任何作用:它只是一个本地操作。它总是返回零,因为它不会失败。但是,发送到不存在的目标可能会失败...
全部记录在案。