net网络编程
文章平均质量分 90
彬彬在线
资料仅供分享,与大家研究,谢谢您的关注。
展开
-
异步IO、APC、IO完成端口、线程池与高性能服务器之一 异步IO
异步IO、APC、IO完成端口、线程池与高性能服务器之一 异步IO背景:轮询 PIO DMA 中断 早期IO设备的速度与CPU相比,还不是太悬殊。CPU定时轮询一遍IO设备,看看有无处理要求,有则加以处理,完成后返回继续工作。至今,软盘驱动器还保留着这种轮询工作方式。 随着CPU性能的迅速提高,这种效率低下的工作方式浪费了大量的CPU时间。因此,中断工作方式开始成为转载 2012-06-02 09:39:08 · 938 阅读 · 0 评论 -
IP地址转换-16进制转化为10进制
很久之前写的,今天放在这里。1、不含字母[cpp] view plaincopyprint?#include #include //8个二进制(2个十六进制)数转换成十进制数,不含a-f。即00-99的转换 int transfer_0(int x) { int y;//结果 int temp;//临时值转载 2012-05-04 16:04:28 · 15869 阅读 · 0 评论 -
网络P4P
P4P概述 P2P软件的应用吞噬了巨量的网络带宽,这使得运营商头痛不已。Verizon的工程师搞了一套新型的拓扑理论下的P4P算法,很有可能以技术方式调和这个矛盾。 传统的P2P方式下数据节点和传输是随机的,也就是说这种传输方式可能占据任意一个网络节点或者出口的带宽。而P4P则是智能选取数据交换对象,更多的通过智能运算选择同一路由器或者地域性网络来进行数据交换,最大程度上解决大原创 2012-02-04 18:20:49 · 2208 阅读 · 0 评论 -
TCP三次握手及四次挥手详细图解
有点简单,不过好理解 Tcp三次握手与四次挥手---------------------------------------------------------------------------------------------------------------------------------------------- 相对于SOCKET原创 2012-02-01 16:35:22 · 897 阅读 · 0 评论 -
IOCP的原理
完成端口(I/O completion):异步过程调用(apcs)问题: 只有发overlapped请求的线程才可以提供callback函数(需要一个特定的线程为一个特定的I/O请求服务)。 完成端口(I/O completion)的优点: 不会限制handle个数,可处理成千上万个连接。I/O completion port允许一个线程将一个请求暂时保存下来,由另转载 2012-02-01 16:31:45 · 1370 阅读 · 0 评论 -
ACE proactor example
网上看的两个好的例子-学习ACE时经常看的。这个文章应该是介绍ACE编程的一个很好的原创文章,个人非常推荐了!1、WIN32下面用proactor可以达到几乎RAW IOCP的效率,由于封装关系,应该是差那么一点。 客户端处理类的常规写法://处理客户端连接消息class ClientHandler : public ACE_Service_Handler{publi转载 2011-12-06 11:23:55 · 1398 阅读 · 0 评论 -
Decoda调试Lua
本文内容算不上原创,网上已有很多Decoda调试Lua的教程。在此只是把自己弄了几个小时的内容做一个整理。调试Lua脚本的方法很多,也有很多这方面的程序员利用Lua的Debug库写了自己的调试器。我使用的是国外的Decoda软件。官方网站http://www.unknownworlds.com/decoda 最新的版本是1.13,网上也有破解版。 Decoda调试Lua主要分两种方转载 2011-12-05 15:03:36 · 3052 阅读 · 1 评论 -
vc\vs下lua编程环境搭建
http://www.ghoffice.com/bbs/read-htm-tid-79569.html以vs2003[en]为例 安装完LuaForWindows_v5.1.4http://luaforge.net/frs/?group_id=377打开vstools->options->projects->vc++ directories转载 2011-12-05 15:51:23 · 1761 阅读 · 0 评论 -
lua 调试器(Decoda)
1、http://www.unknownworlds.com/decoda,这个工具可以注入到宿主程序内对lua脚本进行调试。2、有2种方式对lua进行调试从Decoda启动宿主程序a、project菜单中的Settingsb、在commond中填入你要运行的宿主程序。点击okc、用它打开lua脚本设置断点。Decoda 中选择Start Debugging下面是简单的转载 2011-12-05 15:01:53 · 2039 阅读 · 0 评论 -
Win32多线程编程(6) — 多线程协作及线程的池化管理
多线程级别的并行计算写多线程应用程序最困难的地方在于如何使各线程的工作协调进行。Windows提供的用于线程间通信的各种机制是很容易掌握的,可是要把它们应用到工作中完成既定的功能时就会遇到这样、那样的困难。对于常见的“生产者-消费者”模型,只要采取合理同步措施实现数据交换的统一性即可。这类模型中的多线程往往任务独立,主要两类线程,一类写线程(生产者),一类读线程(消费者)。但在实际应用中,转载 2011-11-29 15:36:36 · 1264 阅读 · 0 评论 -
完成端口(IOCP)编程探讨
原文地址:http://www.cppblog.com/sherrylso/archive/2007/08/26/30858.html本文主要探讨一下windows平台上的完成端口开发及其与之相关的几个重要的技术概念,这些概念都是与基于IOCP的开发密切相关的,对开发人员来讲,又不得不给予足够重视的几个概念:1) 基于IOCP实现的服务吞吐量2)IOCP模式下的线程切换3)基于转载 2011-11-08 21:00:24 · 788 阅读 · 0 评论 -
ACE_Reactor是如何做到事件分发的
1. ACE_Reactor的创建ctor: ACE_Reactor (ACE_Reactor_Impl *implementation = 0, int delete_implementation = 0);你可以自己创建一个ACE_Reactor但是大多数时候,我们都是通过调用ACE_Reactor::instance()这个静态方法来返回唯一的实例。ACE_React转载 2012-06-02 09:32:47 · 1622 阅读 · 0 评论 -
ACE通用客户端框架
http://blog.csdn.net/ishow99/article/details/4266050上一篇《ACE通用服务端框架》为我们展示了ACE接受器(Acceptor)和连接器(Connector)设计模式的高度集成度,本篇延续上一篇的思路,完成通用客户端的设计和编码。 由于ACE充分发挥了C++模板技术的优势,是的Connector模转载 2012-06-07 14:18:57 · 2044 阅读 · 0 评论 -
Window 2003 TCP
最近在开发程序过程中,原本好好运行好的程序,突然出现以下错误:Net SqlClient Data Provider thrown System.Data.SqlClient.SqlException在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败。 (provider: TCP 提供程序, er转载 2013-12-10 16:26:36 · 1610 阅读 · 0 评论 -
GSM Modem AT+CMGD删除短信AT指令说明备忘
如果你发送一条短信后回复信息 +CNTI:"SM",3 这个3表示的是你现在这个卡上的第三条信息此时发送AT+CMGR=3就可以读取这一条短信如果要删除这一条短信的话发送AT+CMGD=3下面是一些AT+CMGD指令的作用:AT+CMGD=1,0 The message from the preferred message storage at the location 1转载 2012-11-01 16:49:11 · 5921 阅读 · 1 评论 -
通过串口实时接收短消息
一年前本人曾写过“通过串口收发短消息(上)、(下)”两篇文章,讨论了在TE(PC、单片机系统等)上利用扩展的AT指令控制ME(手机,GSM模块等)发送和接收短消息的基本方法。其中接收/阅读短消息采用主动查询的方法。TE发送“AT+CMGL”指令,ME则输出已接收和存储的短消息。这比较符合AT指令集的精神:有问有答,一问一答。但在实际应用中,发现这种方法存在一定的缺点:ME接收到消息并存储起来,转载 2012-11-01 15:07:20 · 1702 阅读 · 0 评论 -
socket工作模式
阻塞模式是socket的缺省方式,也是最常用的方式,即函数阻塞直到调用完毕。可参见前面的例子。可能造成阻塞的函数有:connect()、accept()、读写函数、select()、poll()、gethostbyname()等。 非阻塞模式程序调用可能造成阻塞的函数时,如果会发生阻塞,这些函数返回-1并将errno设置为EAGAIN或EWOULDB转载 2012-08-06 11:21:40 · 2292 阅读 · 0 评论 -
用串口连接GSM手机发送和接收短消息,在应用程序中如何编程实现?
Q 我们打算开发一个基于GSM短消息方式的GPS系统,如何利用SMS进行数据通信?A 首先,我们要对由ESTI制订的SMS规范有所了解。与我们讨论的短消息收发有关的规范主要包括GSM 03.38、GSM 03.40和GSM 07.05。前二者着重描述SMS的技术实现(含编码方式),后者则规定了SMS的DTE-DCE接口标准(AT命令集)。一共有三种方式来发送和接收SMS信息:Block转载 2012-06-26 15:19:57 · 6461 阅读 · 0 评论 -
TCP三次握手/四次挥手详解
1、建立连接协议(三次握手)(1)客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。(2) 服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通讯。(3) 客户必须再次回应服务段一个ACK报文,这是报文段3。2、连转载 2012-06-15 10:56:29 · 965 阅读 · 0 评论 -
Wireshark使用方法(学习笔记二——查询统计)
wireshark的抓包方法上一相关博文已经详细做了介绍,其实关于wireshark来说,比较重要的还是数对抓包之后的“查询统计分析”,如何在海量的数据包中,抓取出自己关注的数据包是处理问题的第一步,今天这篇博文主要讲解如何进行“简单”的抓包筛选。为了直观,本篇博文以一次实例进行,我在本地对网卡进行了抓包,登录了一次QQ,与网友聊天,并且,访问了一次我的博客www.zike.me,那我就从海量转载 2012-06-08 08:46:18 · 3977 阅读 · 0 评论 -
Wireshark使用方法(学习笔记一)
Wireshark(前称Ethereal)是一款功能强大的网络抓包分析工具,在我的工作中是不可或缺的一部分工具,往往在网络出现异常时,查看网络中的数据包,会豁然开朗。1.菜单栏 主菜单包括以下几个项目: File ——包括打开、合并捕捉文件,save/保存,Print/打印,Export/导出捕捉文件的全部或部分。以及退出Wireshark项. Fi转载 2012-06-08 08:45:20 · 11791 阅读 · 0 评论 -
ACE入门
http://kb.cnblogs.com/a/1528292/ACE编译1. 设置环境变量 在操作系统添加一个名为ACE_ROOT的用户环境变量,值为刚才ace的解压路径D:\Develop\ACE_wrappers。 添加用户的Path环境变量,值为%ACE_ROOT%\lib,这样才能保证系统能找到ace生成的动态连接库。 设置VS2005的C++开发项目信息,依次打转载 2012-06-07 15:57:53 · 919 阅读 · 0 评论 -
使用STL的hash_map要点
说来惭愧,使用了很久Visual Stdio 2003了,只知道MFC升级到了7.0,ATL也升级到了7.0,对于这两个经典的类库做了一些研究,但一直没有注意C++标准库的变化。 今天尝试的使用了stdext::hash_map这个库,果然不错。下面写下一些心得。 hash_map类在头文件hash_map中,和所有其它的C++标准库一样,头文件没有扩展名。如下转载 2012-05-17 17:14:10 · 908 阅读 · 0 评论 -
IOCP模型总结
IOCP(I/O Completion Port,I/O完成端口)是性能最好的一种I/O模型。它是应用程序使用线程池处理异步I/O请求的一种机制。在处理多个并发的异步I/O请求时,以往的模型都是在接收请求是创建一个线程来应答请求。这样就有很多的线程并行地运行在系统中。而这些线程都是可运行的,Windows内核花费大量的时间在进行线程的上下文切换,并没有多少时间花在线程运行上。再加上创建新线程的开销原创 2011-11-07 23:30:06 · 699 阅读 · 0 评论 -
使用Lua脚本为wireshark编写自定义通信协议解析器插件
在网络通信应用中,我们往往需要自定义应用层通信协议,例如基于UDP的Real-Time Transport Protocol以及基于TCP的RTP over HTTP。鉴于RTP协议的广泛性,wireshark(ethereal)内置了对RTP协议的支持,调试解析非常方便。RTP over HTTP作为一种扩展的RTP协议,尚未得到wireshark的支持。在《RTP Payload Form转载 2011-11-29 15:27:04 · 5489 阅读 · 0 评论 -
TCP/IP通信架构
1 .计算机网络的体系结构计算机网络是一个非常复杂的系统,将整个网络的传输功能进行分层设计的网络结构层次模型及各层协议的集合称为计算机网络的体系结构。为了解决异构互联及通信问题, 20世纪 70 年代后期国际标准化组织( ISO )制定了 OSI ( Open System Interconnect )开放式系统互联参考模型。该模型采用了三级抽象,即体系结构、服务定义和协议规格说明,是一种标准转载 2011-11-29 15:35:42 · 1564 阅读 · 0 评论 -
TCP连接探测中的Keepalive 和心跳包
采用TCP连接的C/S模式软件,连接的双方在连接空闲状态时,如果任意一方意外崩溃、当机、网线断开或路由器故障,另一方无法得知TCP连接已经失效,除非继续在此连接上发送数据导致错误返回。很多时候,这不是我们需要的。我们希望服务器端和客户端都能及时有效地检测到连接失效,然后优雅地完成一些清理工作并把错误报告给用户。 如何及时有效地检测到一方的非正常断开,一直有两种技术可以运用。一种是由TC原创 2011-06-17 11:04:00 · 1020 阅读 · 0 评论 -
soket编程相关(二)如何判断连接状态断开,Linux:C/Socket多路复用select(),阻塞
<br /><br />以下程序是网上一哥们写的:<br />就是通讯任意一方可以任意发送消息,有消息来到时会收到系统提示去接收消息。<br />先建立好套接字,然后绑定,转化为监听套接字,接受连接。<br />这里要用到select函数。使用步骤如下:<br />1、设置一个集合变量,用来存放所有要判断的句柄(file descriptors:即我们建立的每个socket、用open打开的每个文件等)<br />2、把需要判断的句柄加入到集合里<br />3、设置判断时间<br />4、开始等待,即sel转载 2011-06-02 15:02:00 · 9958 阅读 · 0 评论 -
关于SIGPIPE导致的程序退出
<br />收集一些网上的资料,以便参考:<br />http://blog.chinaunix.net/u2/69143/showart_1087349.html<br /> 当服务器close一个连接时,若client端接着发数据。根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。<br /> 根据信号的默认处理规则SIGPIPE信号的默认执行动作是terminate(终止、退出原创 2011-06-02 12:36:00 · 759 阅读 · 0 评论 -
TCP态迁移,CLOSE_WAIT & FIN_WAIT2 的问题[收集整理]
<br /><br />TCP状态迁移<br />大家对netstat -a命令很熟悉,但是,你有没有注意到STATE一栏呢,基本上显示着established,time_wait,close_wait等,这些到底是什么意思呢,在这篇文章,我将会详细的阐述。<br />大家很明白TCP初始化连接三次握手吧:发SYN包,然后返回SYN/ACK包,再发ACK包,连接正式建立。但是这里有点出入,当请求者收到SYS/ACK包后,就开始建立连接了,而被请求者第三次握手结束后才建立连接。但是大家明白关闭连接的工作原原创 2011-05-11 17:17:00 · 1388 阅读 · 0 评论 -
Wireshark图解教程--介绍界面、两个菜单以及capture filter的语法
<br />您可以从Wireshark User's Guide中获得更多帮助。 <br /> 运行Wireshark或者Ethereal: (Ethereal与Wireshak的区别是什么?)#wireshark#ethereal<br /> <br /> 选择需要捕捉的设备。Capture -> Options<br />选择您想要捕捉的设备后点击Start。 <br /> <br /> Wireshark的运行结果。 <br /><br /><br />为了更加高效的使用Wireshark,详原创 2011-05-10 14:40:00 · 16443 阅读 · 2 评论 -
Wireshark图解教程--介绍界面、两个菜单以及capture filter的语法
<br />您可以从Wireshark User's Guide中获得更多帮助。 <br /> 运行Wireshark或者Ethereal: (Ethereal与Wireshak的区别是什么?)#wireshark#ethereal<br /> <br /> 选择需要捕捉的设备。Capture -> Options<br />选择您想要捕捉的设备后点击Start。 <br /> <br /> Wireshark的运行结果。 <br /><br /><br />为了更加高效的使用Wireshark,详原创 2011-05-10 14:40:00 · 2414 阅读 · 0 评论 -
socket TCP协议 传输层中的滑动窗口协议
<br />TCP的首部中有一个很重要的字段就是16位长的窗口大小,它出现在每一个TCP数据报中,配合32位的确认序号,用于向对端通告本地socket的接收窗口大小。也就是说,如果本地socket发送一个TCP数据,其32位确认序号是5,窗口大小是5840,则用于告诉对端,对端已经发出的4个字节的数据已经收到并确认,接下来,本地socket最多能够接收从第5个字节开始的5840个字节长度的数据。这是由接收方进行的一种流量控制,接收方通过告诉发送方自己所能够接收数据的大小,达到控制发送方发送速度的目的。<br原创 2011-02-28 16:33:00 · 4756 阅读 · 1 评论 -
基于SMGP协议短信发送速度问题
<br /><br />短信网关在处理SP接入的同时,他还有个很重要的作用就是流控,以防止第三方突然提交大量的短信而导致整个短信平台出现异常增加的流量,导致系统不稳定。为了实现对于客户端过来的请求进行流控,由于无法判断SP提交的短信实时速度,短信网关需要将实时提交的短信进行分时(类似高数里面的微积分的概念),并根据细小的分时来统计当前的流量,对于超过流控的流量进行过滤。这句话不大好理解,我们可以简单举个例子:假设网关开给你的流量是10条/秒,那个网关就给你准备10个杯子,你在1秒内往10个杯子倒水,网关并不转载 2011-03-01 09:49:00 · 6906 阅读 · 4 评论 -
TCP三次握手及四次挥手详细图解
Andrew Huangbluedrum@163.com 相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的.因此开发者并不需要控制这个过程.但是对于理解TCP底层运作机制,相当有帮助. 而且对于有网络协议工程师之类笔试,几乎是必考的内容.企业对这个问题热情之高,出乎我的意料:-)。有时上午面试前强调这个问题,并重复讲一次,下午几乎每一个人都被问到这个问题。 因此在这里详细解释一下这两个过程。 TCP三次握手 所谓三次握手(Three-way Handshak转载 2011-02-28 16:48:00 · 1194 阅读 · 0 评论 -
CMPP/SGIP协议设计与实现
<br /><br /> CMPP提供了基于TCP的长连接接口和短连接接口标准,SGIP提供了基于TCP和HTTP/TCP的短连接接口标准。CMPP中的短信网关为TCP服务器,通过接收SP发起的TCP连接来发送MT/MO/Report/Resp等消息。SGIP中发送MT/MTResp时是短信网关为TCP服务器,发送MO/MOResp/Report/ReportResp时短信网关作为TCP客户端。<br />从CMPP协议的文字内容来看,目前所有的短信网关的设计和实现都不标准。这是很有中国特色的,中转载 2011-03-01 15:02:00 · 3305 阅读 · 0 评论 -
linux中select()函数分析
<br /><br />Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所谓非阻塞方式non-block,就是进程或线程执行此函数时不必非要等待事件的发生,一旦执行肯定返回,原创 2011-02-28 09:53:00 · 717 阅读 · 0 评论 -
Tcp 断开连接
TCP状态转移要点 TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死状态,连接本身占用的资源不会被释放。网络服务器程序要同时管理大量连接,所以很有必要保证无用连接完全断开,否则大量僵死的连接会浪费许多服务器资源。在众多TCP状态中,最值得注意的状态有两个:CLOSE_WAIT和TIME_WAIT。 1、原创 2011-06-15 17:51:00 · 3923 阅读 · 2 评论 -
getsockopt,setsockopt用法小结
套接口选项在前面的几章中,我们讨论了使用套接口的基础内容。现在我们要来探讨一些可用的其他的特征。在我们掌握了这一章的概念之后,我们就为后面的套接口的高级主题做好了准备。在这一章,我们将会专注于下列主题:如何使用getsockopt(2)函数获得套接口选项值如何使用setsockopt(2)函数设置套接口选项值如何使用这些常用的套接口选项得到套接口选项有时,一个程序需要确定为当前为一个套接口进行哪些原创 2011-06-17 14:40:00 · 1025 阅读 · 0 评论 -
ACE日志输出的几种重定向方式
初学ACE,将自己的一些总结放在这里与大家分享,希望能有所帮助。不当之处恳请大家指正。1. 输出到stderrACE输出的默认方式,将日志输出到控制台。如果希望从其他的重定向方式切换到stderr,可以采用如下的方式。1 ACE_LOG_MSG->open (0, ACE_Log_Msg::STDERR);2 ACE_DEBUG ((LM_INFO, ACE_TEXT ("原创 2011-11-25 15:00:07 · 3670 阅读 · 2 评论