C++ 如何基于tcp创建可靠的udp协议?

C++ 如何基于tcp创建可靠的udp协议?,c++,sockets,tcp,udp,C++,Sockets,Tcp,Udp,我正在尝试编写一个可靠的udp协议,但是我对服务器何时将连接移交给套接字感到困惑。 在java中,tcp服务器侦听特定端口,然后在接受时返回套接字 Socket clientSocket = server.accept(); accept方法是在syn位交换之后还是在建立状态时返回套接字?Java套接字是根据BSD API建模的,因此支持accept返回的套接字完全连接。当accept方法返回套接字时,套接字处于已连接状态,在accept方法返回套接字之前交换SYN/SYN-ACK数据包。事实

我正在尝试编写一个可靠的udp协议,但是我对服务器何时将连接移交给套接字感到困惑。 在java中,tcp服务器侦听特定端口,然后在接受时返回套接字

Socket clientSocket = server.accept();

accept方法是在syn位交换之后还是在建立状态时返回套接字?

Java套接字是根据BSD API建模的,因此支持accept返回的套接字完全连接。

当accept方法返回套接字时,套接字处于已连接状态,在accept方法返回套接字之前交换SYN/SYN-ACK数据包。事实上,SYN数据包在accept方法中是不交换的。这些数据包在驱动程序层(TCP堆栈)上交换

如果您试图编写可靠的UDP,那么我强烈建议您查看UDT项目源代码。它是用C++编写的,但是你可以从这个项目中得到很多指导。UDT项目写得很好,效率很高,非常稳定


首先回答问题-当accept返回时,套接字已连接

第二,做这类事情最好的方法就是使用它,因为它太神奇了,对你来说太有用了

最后,从这个角度来看,它的工作原理如下:

用户数据报协议(UDP)是Internet协议套件(用于Internet的网络协议集)的核心成员之一。使用UDP,计算机应用程序可以向Internet协议(IP)网络上的其他主机发送消息(在本例中称为数据报),而无需事先进行通信以建立特殊的传输通道或数据路径


@Seth Carnegie我实际上在使用qt,但我在学习java的使用方法。Qt与之类似,它使用套接字描述符。我更好奇的是,在tcp数据包交换中,它在什么时候返回套接字?