随笔分类 -  网络编程

摘要:昨天简单完成了解码部分,今天加入编码部分(同一个类中)。方式和编码部分类似,利用属性对字段访问的特点,把解码程序写在属性访问部分。解码的函数只需读取这些属性值即可完成PDU解码工作。手机或短信猫接收到的PDU字符串包含SCA、PDU-Type、OA、PID、DCS、SCTS、UDL、UD八个部分,每个部分包含对应字段和 属性,字段中存储PDU格式编码对应段的字符串(函数先把对应字符串存入对应字段),属性读取过程写入代码,读取的值即为解码后的数据(短信内容、手机号 码等)。从PDU获取信息需读出(解码)四部分:SCA、OA、SCTS、UD,以下分别对其讲解。有关收到信息PDU格式解析参考:短信猫 阅读全文
posted @ 2011-09-23 16:15 董雨 阅读(426) 评论(0) 推荐(0)
摘要:刚研究完PDU格式的短信编码,的写了个简单PDU编解码类,贴出来分享下PDU编码,即发送方PDU格式:包括SCA,PDU-Type,MR,DA,PID,DCS,VP,UDL,UD九个部分。详细请参考:短信猫软件的实现(C#)<三>PDU格式短信解析编码利用类属性访问的特点编写:字段对应属性,PDU的每个部分对应一组字段属性,写属性时对字段写入对应部分的PDU编码,编码函数从字段值得 到,直接返回各个字符串的对应PDU值。计划编解码放入一个类,属性读取即得解码后的值,解码函数读对应属性值即得到解码后的字符串(短信内容、字符串 等)。本文详细介绍编码的方案及程序,下一篇是解码的程序,谢 阅读全文
posted @ 2011-09-23 16:14 董雨 阅读(557) 评论(0) 推荐(0)
摘要:AT指令收发短信主要有两种模式:Text模式和PDU(Protocol Data Unit,协议数据单元)模式。使用Text模式收发短信代码简单,很容易实现,最大缺点不支持中文短信。PDU模式不仅能发送中文短信,也能发送英文短 信。PDU收发短信有三种编码可用:7-bit、8-bit和UCS2编码。7-bit编码用于发送普通的ASCII字符,即英文短信,最多可发送160 字符。8- bit编码通常用于发送数据消息。UCS2编码用于发送Unicode字符,可发送中文字符,最多发送70字符。短信发送实例:Text模式(向号码为15050850677的手机发送“TEST”):1: AT ... 阅读全文
posted @ 2011-09-23 16:09 董雨 阅读(362) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/ryanShowTime/archive/2010/11/30/1892162.htmlAT指令开发Wavecom短信发送程序下面这个链接是一位牛人把 手机 SMS PDU 格式参考手册 英文版翻译过来的链接地址:http://xinos.cn/smspdu/manual.shtml#_Toc86589166这段时间应该公司要求开发wavecom的短信发送软件,所以用到了AT指令来开发,在这里把过程中遇到的一些问题帖出来,希望对大家有所帮助.利用AT指令来开发wavecom的短信发送程序的时候,有几种模式,PDU模式,TEXT模式等,网上有很多帖子 阅读全文
posted @ 2011-09-23 11:26 董雨 阅读(275) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/chenxizhang/archive/2011/09/10/2172994.html这一篇文章,我将图文并茂地介绍Socket编程的基础知识,我相信,如果你按照步骤做完实验,一定可以对Socket编程有更好地理解。本文源代码,可以通过这里下载 http://files.cnblogs.com/chenxizhang/SocketWorkshop.rar第一步:创建解决方案第二步:创建服务端程序这里可以选择“Console Application”这个类型,比较方便调试然后编写如下代码,实现服务器的基本功能using System;using Sy 阅读全文
posted @ 2011-09-10 21:55 董雨 阅读(278) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/wildman/archive/2009/07/03/1516604.html1.1 从访问网页开始在探讨具体的技术原理之前,我们来搞清楚“网络通信”的定义:它是指媒体信息通过网络从一端传递到另外一端。媒体信息的内容主要是话音、文字、图片和视频图像。至于信息如何通过网络传递,例如:一个字符怎么变成电波信号,电波信号又如何在网络设备中传输和接收的。对于这些我们应用开发人员来说是不需要去深究的。而大家所要关心的是应用层面的东西,例如:通信双方是怎么联系起来的?通信的内容怎么表示才能使双方理解?当某一端出现故障以后,如何让另一端知道?假设有一对热恋中的青 阅读全文
posted @ 2011-09-09 16:07 董雨 阅读(172) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/wildman/archive/2009/07/06/1517629.html接上一篇《基于.NET技术的监控系统应用分析》中所描述的数据通信协议设计,我们来看一下在C#中是怎么对自定义协议进行封包的?我们知道基于流的数据协议的特点:发送和接收到的数据都是连续的流。每次网络I/O操作的流长度不确定,也就是无法知道每次接收到的数据是一个完整的数据包。同样,主机发送一个数据包也会根据网络的实际情况执行若干次。所以我们对这类消息的编解码过程需要进行一个统一的封装。重新回顾一下每个消息的结构:消息头 + 消息体。每次先发送出去的是消息头,然后是消息体。消息 阅读全文
posted @ 2011-09-09 15:54 董雨 阅读(724) 评论(0) 推荐(0)
摘要:http://msdn.microsoft.com/en-us/magazine/cc163467.aspxMSDN Magazine>Issues>2007>March>Implementing the CLR Asynchronous Programming M...Concurrent AffairsImplementing the CLR Asynchronous Programming ModelJeffrey Richter Code download available at: ConcurrentAffairs2007_03.exe (157 KB) B 阅读全文
posted @ 2011-07-26 14:11 董雨 阅读(371) 评论(0) 推荐(0)
摘要:http://msdn.microsoft.com/zh-cn/magazine/cc163356.aspxMSDN 杂志>主页>所有期刊>2007>九月>网络: 与 .NET Framework 3.5 接轨网络与 .NET Framework 3.5 接轨Mariya AtanasovaandLarry CleetonandMike FlaskoandAmit Paka本文讨论: Socket 类性能国际化 URLSystem.Net.PeerToPeer 命名空间本文使用了以下技术: .NET Framework目录Socket 类性能 国际化资源标识符支持 阅读全文
posted @ 2011-07-26 14:09 董雨 阅读(369) 评论(0) 推荐(0)
摘要:http://www.cnblogs.com/Safe3/archive/2009/06/18/1506174.htmlSocket Server with .NET 3.5 using pooled buffers and SocketAsyncEventArgsIn a previous post I talked about the System.Net.Sockets enhancements in .NET 3.5, and if you haven't read it I suggest you do before tucking in to this as some of 阅读全文
posted @ 2011-07-25 16:35 董雨 阅读(473) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/luyikk/article/details/5081133SocketAsyncEventArgs 单机测试成功突破 6W,59999 还是 100%连接上去的 所以估计最高性能可能达到10W以上请看图吧 由于页宽不够 不能够全显示不过你可以另存为图片查看实现原理: 采用 SocketAsyncEventArgs 池 和内存池实现. 代码: /// <summary> /// 启动 /// </summary> public void Start() { if (isDisposed == true) { throw new 阅读全文
posted @ 2011-07-25 14:56 董雨 阅读(969) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/hulihui/article/details/3260685(原创文章,转载请注明来源:http://blog.csdn.net/hulihui)在Socket的接收/发送方法:Send()、BeginSend()、Receive()、BeginReceive()中,第一个参数是字节数数组,表示当前接收数据区或需要发送的数据。普通Socket应用中,往往是接收/发送时创建数组,使用后数组空间由托管堆回收(Socket关闭后其关联的缓冲区情况类似)。显然,频繁创建接收/发送缓冲区将在托管堆上留下很多的内存碎块,影响系统性能。使用Socket异步调事件参 阅读全文
posted @ 2011-07-25 14:43 董雨 阅读(1143) 评论(0) 推荐(1)
摘要:http://blog.csdn.net/hulihui/article/details/3230503#sa(原创翻译文章·转载请注明来源:http://blog.csdn.net/hulihui)原文:An Asynchronous Socket Server and Client.by Andre Azevedo Download source code - 195.1 KB目录前言Socket连接(Socket Connection)Socket服务(Socket Service)连接主机(Connection Host)加密与压缩(Encrypt与Compress)请求入队 阅读全文
posted @ 2011-07-25 14:42 董雨 阅读(727) 评论(1) 推荐(0)
摘要:http://blog.csdn.net/hulihui/article/details/3244520(原创翻译文章·转载请注明来源:http://blog.csdn.net/hulihui)原文:How to use the SocketAsyncEventArgs class. by Marcos Hidalgo Nunes Download client - 4.09 KB Download server - 7.5 KB引言我一直在探寻一个高性能的Socket客户端代码。以前,我使用Socket类写了一些基于传统异步编程模型的代码(BeginSend、BeginReceiv 阅读全文
posted @ 2011-07-25 14:40 董雨 阅读(458) 评论(0) 推荐(0)
摘要:转:http://www.cnblogs.com/killkill/archive/2009/09/01/1557803.html原文地址:http://www.cnblogs.com/onlytiancai/archive/2008/06/25/1229321.html在.NET 3.5里System.Net.Sockets空间下有一组增强功能的类,提供可供专用的高性能套接字应用程序使用的可选异步模式,SocketAsyncEventArgs 类就是这一组增强功能的一部分。该类专为需要高性能的网络服务器应用程序而设计。应用程序可以完全使用增强的异步模式,也可以仅仅在目标热点区域(例如,在接收 阅读全文
posted @ 2011-07-25 11:17 董雨 阅读(329) 评论(0) 推荐(0)
摘要:无论什么平台,编写支持高并发性的网络服务器,瓶颈往往出在I/O上,目前最高效的是采用Asynchronous I/O模型,Linux平台提供了epoll,Windows平台提供了I/O Completion Port(IO完成端口,即IOCP)。Windows自winsock2开始就提供了IOCP支持,可以通过C++直接调用API,但对于基于.Net的C#开发,是在.Net Framework2.0开始才引入的,在2.0版本下,最高效的网络服务器是通过异步Socket的一些列Beginxxx,Endxxx方法实现的,底层就是基于IOCP的。当.Net Framework升级到2.0 sp1之后 阅读全文
posted @ 2011-07-07 17:10 董雨 阅读(919) 评论(0) 推荐(0)
摘要:http://dotcpp.iteye.com/blog/599268本文在别人的文章基础上(http://foxhack.blog.51cto.com/96963/25908),自己稍加改动,希望对初学者有所帮助。老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系。他们的信会被邮递员投递到他们的信箱里。这和Socket模型非常类似。下面我就以老陈接收信件为例讲解Socket I/O模型~~~一:select模型老陈非常想看到女儿的信。以至于他每隔10分钟就下楼检查信箱,看是否有女儿的信~~~~~在这种情况下,"下楼检查信箱"然后回到楼上耽误了老陈太多的时间,以 阅读全文
posted @ 2011-06-28 12:52 董雨 阅读(228) 评论(0) 推荐(0)
摘要:http://tangfeng.iteye.com/blog/518148“完成端口”模型是迄今为止最为复杂的一种I/O模型。然而,假若一个应用程序同时需要管理为数众多的套接字,那么采用这种模型,往往可以达到最佳的系统性能!但不幸的是,该模型只适用于Windows NT和Windows 2000操作系统。因其设计的复杂性,只有在你的应用程序需要同时管理数百乃至上千个套接字的时候,而且希望随着系统内安装的CPU数量的增多,应用程序的性能也可以线性提升,才应考虑采用“完成端口”模型。要记住的一个基本准则是,假如要为Windows NT或Windows 2000开发高性能的服务器应用,同时希望为大量 阅读全文
posted @ 2011-06-28 10:36 董雨 阅读(206) 评论(0) 推荐(0)
摘要:http://tangfeng.iteye.com/blog/795497Socket中可以使用select设置连接超时,需要先将socket设置为非锁定模式,这样,在connect时,才会立马跳过,同时,通常也会产生一个WSAEWOULDBLOCK错误,这个错误没关系。再执行select则是真正的超时。C++代码WSADATAwsd;SOCKETcClient;intret;structsockaddr_inserver;hostent*host=NULL;if(WSAStartup(MAKEWORD(2,0),&wsd)){return0;}cClient=socket(AF_IN 阅读全文
posted @ 2011-06-28 10:34 董雨 阅读(317) 评论(0) 推荐(0)
摘要:http://tangfeng.iteye.com/blog/518134OVERLAPPED结构主要用于异步I/O操作,其数据结构定义如下:typedef struct _OVERLAPPED { DWORD Internal; // 系统保留,存放系统设置的状态 DWORD InternalHigh; // 系统保留,存放被传输数据的长度 DWORD Offset; // 指定文件的位置,文件位置是相对文件开始处的字节偏移量。 DWORD OffsetHigh; // 指定开始传送数据的字节偏移量的高位字 HANDLE hEvent; // 标识事件,数据传送完成时把它设为信号状态}OVE 阅读全文
posted @ 2011-06-28 10:31 董雨 阅读(306) 评论(0) 推荐(0)