【问题标题】:connecting but not reciving data from a TcpListener连接但不接收来自 TcpListener 的数据
【发布时间】:2012-02-12 01:09:10
【问题描述】:

我开发了一个接收连接的小型服务器(基本上使用这里的示例:http://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener.aspx

问题是我不知道如何,但是每当建立连接时,它就无法发送数据(或者发送的数据没有到达服务器,从 TcpListener 的 GetStream 读取 NetworkStream 的方法只是阻塞并且没有得到任何数据字节。

我试图只是远程登录它,而不是使用我拥有的客户端,问题是一样的。有趣的是,如果我执行“telnet localhost 2000”,它会完美运行!

似乎有什么东西阻止了通信(以前甚至 localhost 都没有工作,直到我在服务器上升级了 .NET Fw),但我不知道是什么会阻止数据但允许连接,实际上并没有知道应用程序可以做到这一点!

对此的任何帮助将不胜感激! 谢谢!

编辑:

线

TcpClient client = server.AcceptTcpClient();            

正确获取 tcp 连接,然后我得到网络流,当我尝试从中读取时,没有收到数据(i == 0):

i = stream.Read(bytes, 0, bytes.Length)

【问题讨论】:

  • 发布您的代码并仔细检查您的防火墙
  • 你能发布一些代码吗?它将极大地帮助您回答问题。
  • 是否有任何其他网络服务在这些盒子之间工作(文件/打印共享、IIS 甚至 ping)?

标签: c# tcp tcplistener


【解决方案1】:

这是一个防火墙...显然在端口 2000 上有一些具有特定协议的通用服务,并且防火墙阻止了所有不遵循此协议的数据:/

尽管如此,还是谢谢你的帮助!!

【讨论】:

    【解决方案2】:

    您是否尝试使用 WAN IP 而不是 LAN ip 连接到您的服务器? 您可能需要转发您的路由器端口以使其正常工作。

    有关端口转发的帮助,请参阅this site

    【讨论】:

    • 它从 wan 正确转发,连接到达服务器但它无法向它发送数据(看起来有些东西阻止了数据传输而不是连接)。
    • 正如其他人所说,发布您的一些客户端代码将使我们能够更有效地帮助您。 (我猜您的服务器与您链接的示例非常相似)
    猜你喜欢
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 2022-08-22
    • 2021-05-27
    • 1970-01-01
    • 2018-09-18
    • 1970-01-01
    • 2017-05-20
    相关资源
    最近更新 更多