gpt4 book ai didi

Java Serversocket.accept() 不按客户端连接的顺序返回套接字?

转载 作者:太空宇宙 更新时间:2023-11-04 06:42:53 24 4
gpt4 key购买 nike

我们在 Java 服务器和 C++ 客户端之间创建 2 个连接。 Java ServerSocket 对象调用accept()两次,每次返回1个套接字; C++ 客户端调用 connect() 两次。我们假设accept()返回的第一个套接字的端口应该与调用connect()的第一个客户端套接字的端口相同,并且第二对套接字也相同。

但是通过检查每个套接字上的端口号,我偶尔会看到异常情况,其中来自accept()的第一个套接字连接到调用connect()的第二个客户端套接字,而来自accept()的第二个套接字连接到第一个客户端套接字。

服务器和客户端在这里都是单线程建立连接。怎样才能颠倒顺序呢?

最佳答案

来自两个连接的初始同步数据包的顺序可能会在网络上交换。例如,如果“第一个”连接的初始 SYN 数据包被丢弃,并且直到“第二个”连接的初始 SYN 数据包之后才会重新发送该数据包。此外,即使您的服务器和客户端是单线程的,处理 TCP 堆栈的系统代码也可能是多线程的。

关于Java Serversocket.accept() 不按客户端连接的顺序返回套接字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24436994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com