我正在尝试使用Python套接字库(3.5,在Linux Mint 18上),尝试理解UDP。我是一个涉猎软件的硬件人员,UDP似乎比TCP更容易理解。我非常清楚UDP不能保证一对一地传递数据包。
到目前为止,我可以按照教程将数据从服务器回显到客户端。
然而,我喜欢推动事情,看看当应用程序没有按预期路径进行时会发生什么,我不喜欢写那些在意外情况下“挂起”的东西。
如果服务器将套接字绑定到端口号,然后客户端发送多个消息到该端口,然后服务器多次调用recvfrom(),我发现每次调用都返回一个消息,并且消息按顺序排列。换句话说,消息已经被缓冲,后来的消息没有覆盖队列中先前的消息。我并不惊讶看到这种情况发生,但也不会感到惊讶,即只有最后接收到的消息可用,即缓冲区长度为1。
这个缓冲区及其深度是Python实现细节、Linux Mint/Ubuntu细节还是由UDP协议定义的?