C# C通过web应用发送和接收tcp数据包

C# C通过web应用发送和接收tcp数据包,c#,sockets,tcp,tcpclient,tcpserver,C#,Sockets,Tcp,Tcpclient,Tcpserver,嗨 我们正在写一个独特的项目。我想知道是否有人能给我指出正确的方向,因为我不熟悉tcp编程 我们与外部系统对话。我发送一个tcp数据包并接收tcp响应。这需要从web应用程序中的一个页面开始工作,每x毫秒连续轮询一次 建议的消息长度为8字节,不传输有关消息开始或结束的信息。消息结构: |字节0 |字节1 |字节2 |字节3 |字节4 |字节5 |字节6 |字节7| 消息分隔符是: |字节0 |=0x02 stx 和 |字节7 |=0x03 etx 我的发送信息: |stx |‘s’|‘b’|‘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|

我的recv信息: |stx |“S”|“B”|“0”|“1”|“0”|“0”| etx|

问题:

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


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

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

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

让Javascript使用从计时器回调调用的Ajax请求轮询服务器;这有投票的所有缺点, 使用长时间的投票,这基本上意味着对你的网站进行一次asnycronous调用,直到有结果为止;这不能很好地扩展,因为它为每个客户端网页锁定一个IIS线程, 使用comet服务器和相关的客户端库是最好的方法,但通常需要花钱。
web上有很多关于Comet和Ajax的信息。

您可能希望了解客户端通信,尽管目前支持非常有限


另一种选择是使用.swf文件作为TCP通信的中介。看见每次收到感兴趣的数据包时,您都可以使用ExternalInterface将数据从flash电影中传递出来,并将其发送给急切等待的javascript

最好的方法是不要使用网页进行连续通信,而是使用服务。好的,谢谢,我是这么想的,但我需要将tcp响应的结果显示为一条快闪消息发送给用户。您的网页会向服务器发出AJAX调用。它可以调用一个处理程序,一个服务,不管什么,都无所谓。然后,使用TCP调用外部系统。这就是您当前拥有的实现此功能的任何代码。来自外部系统的响应将作为处理程序的响应发送回网页。该网页可以处理这些数据。Flash和JavaScript一样,不允许跨域通信,除非其他网站有跨域策略文件。这是更多的工作,它需要加入Flash的组合。谢谢,哇,我从来没有意识到Flash有这个内置的。我正在研究WebSocket,我想这就是我需要的。