我正在从事服务器/多客户端编程。我会停止追逐一切都运行良好但是
foreach(Socket sct in socketArray){
sct.send(data);
}
不工作。它假设将数据发送到所有连接的套接字,但只有发出请求的套接字才能获得响应。我在想是不是和tcp打包有关?或者我不知道为什么它不起作用?如果有人可以提供帮助,我将非常感激。谢谢
最佳答案
假设 data
是 byte[]
并且您的意思是 sct.Send
,那么:它应该可以正常工作,并发送相同的负载- 按顺序 - 到 socketArray
中的所有套接字。这里没有什么特别细微的差别 - 每个套接字都是独立的。
要检查的事情:
socketArray
是否真的有预期数量的套接字?- 它们是正确的 socket 吗?
- 是否发生异常?
- socket 真的连接了吗? (众所周知,损坏的套接字很难可靠地检测到)
- 您是否启用了
NoDelay
? - 这里是否存在某种并发性,这可能意味着单个套接字试图同时发送两次?
- 是否发送,错误在接收码中?
关于C# TCP Socket编程——向所有套接字发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49648193/