.net - 通过已建立的连接与防火墙后面的设备对话 - 如何?

标签 .net tcp

防火墙后的设备建立并维护与我的服务器的套接字连接。我通过已建立的连接与设备交谈。这个模式叫什么,我在哪里可以获得更多信息、.net 代码示例等?

背景 - 我们的设备只有串行端口,我们在客户站点使用 GSM 调制解调器。然后,我们从办公室调用每个调制解调器以检索数据。问题是移动宽带(GPRS/UMTS 等),尤其是用于少量数据的 M2M 很便宜。电路交换数据(调用调制解调器和传真)很昂贵,在一些国家被弃用、不受支持甚至不可用(泰国)。所以我们正在反转模式并在调制解调器中使用 GPRS+TCP 套接字功能。

我已经在我的“自动数据检索器”中实现这个用于发送定义的数据包(例如“给我你的序列号”)并期待对我的请求的响应(等到整个响应已到达并带有已知的字节数和/或已知的停止序列)。

我想要实现的是类似于串行端口(轮询缓冲区并读取所有新字节)或事件模型(SendBytes/NewBytesReceived)或更现代的东西(响应式(Reactive)扩展?) .

我的最终目标是一个小型服务器,它只做这个,允许多个程序连接到远程设备。然后我可以运行一个“配置”应用程序来配置设备 98,同时允许“自动数据检索器”与设备 13、18 和 27 一起工作。

奖金问题 - 你会给这个服务器/模式起什么名字?

最佳答案

防火墙经过编程,因此它们将对设备发起的任何 tcp 连接的应答转发回原始设备。

防火墙后面的设备必须始终是发起连接的设备。

服务器很简单,只需等待预定义端口中的连接,然后创建一个新线程来处理每个新的传入连接。这样服务器就可以同时处理多个连接。

请记住,如果连接长时间处于空闲状态,防火墙可能会失去与原始设备的关联。您可以实现保持事件机制,或者在您的设备每次空闲时关闭连接。

关于.net - 通过已建立的连接与防火墙后面的设备对话 - 如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13566684/

相关文章:

c# - C++ 混合模式应用程序中的内存管理

c# - 在 Azure SQL 数据库中插入/更新/删除新记录时将更新推送到 SignalR 流中

java - 非阻塞 IO 仍然是服务器端 Java 的问题吗?

networking - {active, false}、{active, true} 和 {active, once} 有什么区别?

linux - Linux上的TCP文件在哪里

c - 如何连接到 c 中的 bit torrent tracker

c# - wpf - 当未选择关联的单选按钮时,我应该如何自动将文本框变灰?

c# - 我可以判断按下的Ctrl键是左Ctrl键还是右Ctrl键吗?

c# - 请问 GC.SuppressFinalize 有什么实质性影响吗?

c - Go TCP 读取是非阻塞的