TCP 和 UDP 套接字之间的区别

Difference between TCP and UDP sockets

使用 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是 connectionless 那么怎么连接函数 returns success?

UDP中的connect()函数(a)告诉UDP将所有数据报发送到哪里,所以可以使用send()代替sendto(),(b)充当过滤器在传入数据报上,因此您可以使用 recv() 而不是 recvfrom()。它在网络上不做任何事情:它只是一个本地操作。它总是 returns 零,因为它不会失败。但是发送到不存在的目标可能会失败...

都记录在案了。