基于IHttpAsyncHandler的TCP收发器
2013-10-28 16:28
288 查看
上一篇文章中,我们提到使用IHttpAsyncHandler来进行UDP的收发操作。由于UDP模型比较简单,所以运行没什么问题。这一篇我主要是使用IHttpAsyncHandler来进行TCP的收发操作。由于TCP的模型比较复杂,所以在设计的时候,稍微麻烦了一些。
核心讲解
首先,我贴上代码,然后来逐一讲解:
View Code
实现效果
最后看看我们实现的效果吧:
源码下载
点击这里下载源码
由于源码中有SignalR的示例,附件过大,我已经删除了相关的Signr附件,编译的时候,请首先运行 Install-Package Microsoft.AspNet.SignalR -version 1.0
来获取相关的版本。我百度网盘放了全版本的:http://pan.baidu.com/s/15SDGG
解决方案中的SocketViaWeb项目下的Server.aspx 为服务端,Client.aspx为客户端。
核心讲解
首先,我贴上代码,然后来逐一讲解:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Server.aspx.cs" Inherits="SocketViaWeb.Server" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>TCP服务器端</title> <style type="text/css"> body { font-size:12px; } </style> <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function () { $("#btnListen").bind("click", function () { //setInterval(TriggerAjax, 1000); TriggerAjax(); }); }); var array = new Array(); var TriggerAjax = function () { var port = $("#txtPort").val(); $.ajax({ type: "GET", url: "AsyncSocketHandler.ashx?port=" + port, dataType: "text", success: function (result) { if (result != "") { var myDate = new Date(); var message = myDate.toLocaleString() + " : " + result; if (!array.contains(result)) { $("#msg").append(message).append("<br>"); } } TriggerAjax(); //循环调用 }, error: function (result) { TriggerAjax(); //循环调用 } }); } Array.prototype.contains = function (elem) { for (var i = 0; i < this.length; i++) { if (this[i] == elem) { return true; } } return false; } </script> </head> <body> <div style="height: 390px; width: 435px;float:left;border:1px solid #B7D6BF;"> <div style="height:30px;width:100%;float:left;background:url('images/navEx.gif') repeat-x;line-height:30px;text-align:center;"><strong>服务端接收数据</strong></div> <div style="float:left;width:100%;height:310px;border-bottom:1px solid #B7D6BF; overflow-x:auto;" id="msg"></div> <div style="float:left;width:100%;height:50px;text-align:right;line-height:50px;"> 绑定的本机端口:<input id="txtPort" type="text" style="width:40px;border:none;border-bottom:1px solid black;" value="10004" /> <input id="btnListen" type="button" value="监听" style="border:none;background:url('images/btn.gif') no-repeat;width:50px;height:20px;color:White;" /> <input id="btnStop" type="button" value="停止" style="border:none;background:url('images/btn.gif') no-repeat;width:50px;height:20px;color:White;" onclick="return btnStop_onclick()" /> </div> </div> </body> </html>
View Code
实现效果
最后看看我们实现的效果吧:
源码下载
点击这里下载源码
由于源码中有SignalR的示例,附件过大,我已经删除了相关的Signr附件,编译的时候,请首先运行 Install-Package Microsoft.AspNet.SignalR -version 1.0
来获取相关的版本。我百度网盘放了全版本的:http://pan.baidu.com/s/15SDGG
解决方案中的SocketViaWeb项目下的Server.aspx 为服务端,Client.aspx为客户端。
相关文章推荐
- 基于IHttpAsyncHandler的TCP收发器
- 基于TCP与UDP的简单聊天程序
- 基于TCP/IP的局域网多用户通信
- WINDOWS (服务器) 和 DOS(客户端) 网络互连 基于TCP/IP的编程实现
- 基于libuv库的tcp, udp echo服务器和客户段测试python代码。
- 基于事件的异步Socket(TCP连接方式)
- 【转载】 基于UDP、TCP协议的C#网络编程
- 基于TCP的Socket连接【Delphi版】
- socket 网络编程快速入门(二)教你编写基于UDP/TCP的服务端多线程通信
- 基于select模型的TCP服务器
- 想不到Java也能让我基于TCP/IP编写程序,还是如此简单!
- VC面向对象的方式 写一个基于TCP的 客户端服务端程序 (SOCKET)
- 阿里云 物联网套件 MQTT Swift 搭建-基于Tcp连接-域名连接模式
- Windows套接字编程:基于TCP和UDP协议
- 实现采用客户/服务器通信模式,基于TCP网络通信协议的多客户端简单应用
- Java基于TCP的聊天室
- 基于混合TCP-UDP的HTTP协议实现方法
- Winsock网络编程笔记(2)----基于TCP的server和client
- 基于Socket的UDP和TCP编程介绍
- 基于TCP异步Socket模型的介绍