首页 > 解决方案 > 没有从 AGWPE 接收到数据

问题描述

我正在尝试从连接到 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 端口

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

标签: c#sockets

解决方案


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

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


推荐阅读