0

嗨,我们正在编写一个独特的项目。我想知道是否有人可以为我们指明正确的方向,因为我不熟悉 tcp 编程。

我们与外部系统交谈。我发送一个 tcp 数据包并接收到 tcp 响应。这需要从 Web 应用程序中的页面工作,每 x 毫秒不断轮询

建议的消息长度为 8 个字节,不传输有关消息开始或结束的信息。消息结构:| 字节 0 | 字节 1 | 字节 2 | 字节 3 | 字节 4 | 字节 5 | 字节 6 | 字节 7 |

消息分隔符是:| 字节 0 | = 0x02 (stx) 和 | 字节 7 | = 0x03 (etx)

我的发送信息:| stx | 's' | 'b' | '0' | '0' | '0' |'0' |etx |

我的接收信息:| stx | 'S' | 'B' | '0' | '1' | '0' | '0' | 等|

问题:

我应该使用 tcpCLient/Listener 类还是 Sockets 类?

让网页每 x ms 连续轮询和发送/接收这些数据包的最佳方法是什么?

4

2 回答 2

0

你提议的基本上是做不到的,因为Javascript不支持直接TCP/IP。您必须在服务器上运行 TCP 进程,并使用异步更新方法在您的网页上显示结果。

要在页面上异步显示结果,您必须使用 Ajax 和 Comet。Comet 基本上为您提供三种选择:

  1. 让您的 Javascript 使用从计时器回调调用的 Ajax 请求轮询服务器;这具有轮询的所有缺点,
  2. 使用“长轮询”,这本质上意味着对您的网站进行异步调用,该调用会阻塞直到它有结果;这不能很好地扩展,因为它为每个客户端网页锁定了一个 IIS 线程,
  3. 使用彗星服务器和相关的客户端库,是最好的途径,但通常需要花钱。

网上有很多关于 Comet 和 Ajax 的信息。

于 2011-02-10T23:33:42.793 回答
0

您可能希望研究WebSockets以进行客户端通信,尽管目前支持非常有限。

另一种选择是使用.swf文件作为TCP沟通的中介。请参阅http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/net/Socket.html。每次收到感兴趣的数据包时,您都可以使用ExternalInterface将数据从 Flash 电影中传递出来并热切等待 javascript!

于 2011-02-10T23:42:26.760 回答