我使用下面提到的TCP IP套接字代码在客户端和服务器机器的88个线程之间传输数据。
每个线程都分配给不同的核心。是的,它是88核心机器。
每个套接字都在创建套接字并执行发送或接收操作。
每个套接字分配给不同的端口号。 (端口号从8020到8108)
下面提到的代码分别用于每个服务器和客户端代码线程。
这里的问题是,对于少数执行,在某些套接字或线程中,客户端接收的数据与服务器发送的数据匹配。
然而在某些执行中,数据在100个插槽中不匹配。我发现,对于大约50个套接字/线程数据缓冲区匹配但是休息,它们不匹配。
那些不匹配的,有时会发出错误,说“通过对等方重置连接”或“连接失败”,然后从函数返回。
为什么这个错误会在少数套接字和少数执行中随机发生?
为单个线程实现的此示例程序工作正常。当88个线程运行时,问题出现在多线程环境中。
尝试了几个问题排查步骤:
示例代码位于https://www.geeksforgeeks.org/socket-programming-cc/
链接我们使用了相同的API但是88个线程而不是1个线程。