【问题标题】:No data receiving from AGWPE没有从 AGWPE 接收到数据
【发布时间】:2018-05-07 21:08:14
【问题描述】:

我正在尝试从连接到 AGWP 引擎的套接字读取数据。它是一个简单的 TCP/IP 服务器,默认情况下通过 8000 端口上的套接字发送帧。

    Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
    socket.Connect("10.0.0.2", 8000);
    socket.ReceiveTimeout = 3000;

    while(true)
    {
         Console.WriteLine(socket.Connected + " - " + socket.Available);
         byte[] buffer = new byte[36];
         int read = socket.Receive(buffer, 0, 0, SocketFlags.None, out SocketError error);

         Console.WriteLine(read);
    }

这是我在其他各种项目中使用的代码示例。但我在缓冲区中没有收到任何内容。

当我运行应用程序AGWTracker 时,我可以正确看到传入的数据。我确实找到了一个agwpe .net port,它也不起作用。

根据我从 socket.Available 得到的响应,流中不应存在任何数据。有没有其他方法可以检查数据是否可用?有没有其他类可以代替socket或socketClient?

【问题讨论】:

  • 那么就没有什么可读的了;您确定您完成了出站消息,包括任何终止符吗?
  • 这确实是问题所在。我必须在套接字上启用一些监视框架。在我之前的文档中没有很好地记录。 thx 这个提示让我寻找这个协议的好文档

标签: c# sockets


【解决方案1】:

您已通过0 作为要接收的最大字节数;所以...您将始终收到零字节;第三个参数通常应该是buffer.Length(因为您使用0 作为offset

有时,零长度读取实际上非常有用(因此您可以等待数据而不需要缓冲区空间),这就是它不会将此标记为错误的原因。

【讨论】:

  • 感谢快速回答,当我将其更改为 buffer.Length 时,我遇到了超时异常。所以我猜套接字没有收到任何东西。 (socket.Available 总是返回 0)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多