c# - 没有从 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?
解决方案
您已0
作为要接收的最大字节数传递;所以...您将始终收到零字节;第三个参数通常应该是buffer.Length
(因为您使用0
as offset
)
零长度读取有时实际上非常有用(因此您可以在不需要缓冲区空间的情况下等待数据),这就是它不会将其标记为错误的原因。
推荐阅读
- c# - 使用 MapControl 的 UWP 应用程序中的迷你概览图
- outlook-redemption - 如何通过 Outlook 兑换使用 Exchange 模拟
- jakarta-ee - 迁移到 CDI 1.2 WELD 异常
- laravel - Maat网站excel导出
- python - 如何计算python中计算积分的误差?
- c# - C# 中的多平台 GUI 应用程序有哪些选择?
- apache-kafka - 无法在 Kafka 中使用来自远程机器的消息
- asterisk - 如何在 Ozeki 中处理 Asterisk SendText cmd
- c# - 一对一关系实体框架
- ios - 在 iOS 上构建 NewTek NDI 3.0 SDK 时出错