【问题标题】:C# TCP Socket Programming - Sending Data to All SocketsC# TCP 套接字编程 - 向所有套接字发送数据
【发布时间】:2018-09-13 20:23:12
【问题描述】:

我正在从事服务器/多客户端编程。我会停止追逐一切都很好,但是

foreach(Socket sct in socketArray){
        sct.send(data);
}

不工作。它假设向所有连接的套接字发送数据,但只有发出请求的套接字才能得到响应。我在想它是否与tcp封装有关?或者我不知道为什么它不工作?如果有人可以提供帮助,我会非常感激。谢谢

【问题讨论】:

    标签: c# sockets tcp server client


    【解决方案1】:

    假设databyte[] 并且您的意思是sct.Send,那么:它应该可以正常工作,并按顺序向socketArray 中的所有套接字发送相同的有效负载。这里没有什么特别细微的地方——每个套接字都是独立的。

    检查事项:

    • socketArray 确实有预期的套接字数量吗?
    • 它们是正确的套接字吗?
    • 是否发生异常?
    • 套接字实际连接了吗? (众所周知,损坏的套接字很难可靠地检测到)
    • 您是否启用了NoDelay
    • 这里是否有一些并发可能意味着单个套接字试图同时发送两次?
    • 是发送吗,接收码有错误?

    【讨论】:

    • 我在调试中检查了 sockedarray 并且它有正确的套接字我检查了他们的远程 ip 它看起来不错。没有任何例外,就像我在请求方面所说的那样,它工作正常。但我希望其他客户获得相同的请求客户。我不知道什么是 NoDelay
    • @EmirhanÖzsoy NoDelaySocket 上的布尔值;您可能希望它是true。但是,最终我强烈怀疑这里的问题与客户端相关而不是与服务器相关。代码看起来正常。
    • 谢谢我做到了!问题出在当我收到请求时它开始监听的代码中,因此其他客户端没有开始监听而没有请求它正在工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-16
    • 1970-01-01
    • 2013-07-04
    相关资源
    最近更新 更多