网络编程
文章平均质量分 70
Gary@Tokyo
努力生活!
爱好:登山、游泳
If you dont aim high, you will never hit high.
展开
-
recv函数返回值说明
http://blog.csdn.net/chenziwen/article/details/5798507recv函数int recv( SOCKET s, char FAR *buf, int len, int flags);不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据。该函数的第一个参数指定接收端套接字描述符;第二个参数指明转载 2012-03-21 17:50:08 · 5826 阅读 · 0 评论 -
使用IOCP需要注意的一些问题
<br />1- 不要为每个小数据包发送一个IOCP请求,这样很容易耗尽IOCP的内部队列.....从而产生10055错误.<br /><br />2- 不要试图在发送出IOCP请求之后,收到完成通知之前修改请求中使用的数据缓冲的内容,因为在这段时间,系统可能会来读取这些缓冲.<br /> <br />3- 为了避免内存拷贝,可以尝试关闭SOCKET的发送和接收缓冲区,不过代价是,你需要更多的接收请求POST到一个数据流量比较大的SOCKET,从而保证系统一直可以找到BUFFER来收取到来的数据转载 2010-11-04 14:07:00 · 1162 阅读 · 0 评论 -
IOCP中在WSASend以及WSARecv的时候出现WSA_IO_PENDING情况的说明
<br />应该是windows网络编程第二版里面提到过。现在整理一下。<br />1:在IOCP中投递WSASend返回WSA_IO_PENDING的时候,表示异步投递已经成功,但是稍后发送才会完成。这其中涉及到了三个缓冲区。<br />网卡缓冲区,TCP/IP层缓冲区,程序缓冲区。<br />情况一:调用WSASend发送正确的时候(即立即返回,且没有错误),TCP/IP将数据从程序缓冲区中拷贝到TCP/IP层缓冲区中,然后不锁定该程序缓冲区,由上层程序自己处理。TCP/IP层缓冲区在网络合适的转载 2010-11-03 11:53:00 · 2107 阅读 · 0 评论 -
【转帖】对codeproject上一个IOCP框架的修改
<br /> <br />转帖前言:此贴转自某人,对于原作者不公开源码行为不加评论。<br />原帖地址:http://www.doserver.net/post/iocp-core-1.php?page=1&part=1<br /><br /> 首先非常感激作者的代码,由于自己对MFC比较抵触,所以花时间修改了一下这个代码。当然其中也参考了自己之前的IOCP的代码。<br />原文:http://www.codeproject.com/KB/IP/iocp_server_client.aspx转载 2010-11-03 14:08:00 · 3082 阅读 · 2 评论 -
epoll与iocp的异同
<br />目前国内的网游研发,在服务器使用的开发平台方面,win和linux的比例各占多少,我一时半会也没有准确数据,但从我了解的这么多公司情况来看,用 win系统的还是比较多一点,这些企业一般都是比较单纯的网游公司,而用linux的则多数是一些传统的互联网公司,比如网易和腾讯。<br /><br />网游服务器用win还是linux,向来都是大家关注的话题。我想,原因可能很多,但此处不想过多论述这个问题,为避免多费口舌,我还是明确表明一下自己的观点:我是推荐用linux作开发的,虽然我也是刚转来作lin转载 2010-11-03 12:40:00 · 1197 阅读 · 0 评论 -
对IOCP的讨论
在之前的一次客户项目中,由于采用的是别人的方案,服务器在运行几天不等的时间,会出现崩溃的现象,由于后来的一个项目上来了,也没有时间去深究这个问题。这里对客户表示一下道歉。<br /><br />这段时间,由于对年前书籍的撰写并没有达到我的预期目标,开始整理时间,慢慢的写这本书,或者可以说是慎重的写这本书,为什么这么说呢。<br /><br />在我们这个大环境里面,太多太多的“牛人” 总是不屑别人的东西,当然我很佩服你们的技术,说实话,可是我并不欣赏你们的一些道德。当然我只是说一转载 2010-11-03 11:51:00 · 1191 阅读 · 0 评论 -
IOCP Tips
<br />Tip 1 : 使用WSASend/WSARecv来收发数据,而不是使用ReadFile/WriteFile<br />一句话,前者具有更好的性能<br />Tip 2: 理解IOCP的最大并发线程数和工作线程数<br />应该让工作线程数(调用GetQueuedCompletionStatus那些线程)大于等于在CreateIoCompletionPort 指定的NumberOfConcurrentThreads数。<br />标准做法是永远设置NumberOfConcurren转载 2010-11-02 17:43:00 · 787 阅读 · 0 评论 -
转:IOCP在网络应用中常见错误分析
<br />原创文章 JohnsonFeng@yeah.net<br />致力于网络游戏服务器.客户端引擎开发<br />IOCP是一种异步套接字体机制,它是Windows系统中管理异步IO操作的API。使用IOCP,应用程序可以发送一个耗时的请求,然后执行其他的任务,而这个请求在内核执行,调用相应的驱动程序完成IO操作各个步骤。在大规模C/S架构的系统中,完成端口经常用于管理大量Socket连接。最近在一些网上代码和书店的部分参考书中,发现了一些常见的错误,这里经过简单总结,列出以下常见问题,供博转载 2010-11-02 15:56:00 · 1153 阅读 · 0 评论 -
TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞
<br /> <br />原帖:http://www.vckbase.com/document/viewdoc/?id=1773<br /> <br />TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞<br /><br /> 作者:谢红伟<br />下载源代码<br /><br /> 这个标题用了两个顿号三个名称,其实说得是同一个东西,只是网上有不同的说法罢了,另外好像还有人叫TCP打孔(我的朋友小妞听说后问“要打孔啊,要不要我帮你去借个电钻过来啊?”“~!·¥%……·转载 2010-10-11 10:24:00 · 1057 阅读 · 0 评论 -
原始套接字透析之前言
<br />大多数程序员所接触到的套接字(Socket)为两类:<br /><br /> (1)流式套接字(SOCK_STREAM):一种面向连接的Socket,针对于面向连接的TCP服务应用;<br /><br /> (2)数据报式套接字(SOCK_DGRAM):一种无连接的Socket,对应于无连接的UDP服务应用。<br /><br /> 从用户的角度来看,SOCK_STREAM、SOCK_DGRAM这两类套接字似乎的确涵盖了TCP/IP应用的全部,因为基于TCP/IP的原创 2010-06-25 16:22:00 · 994 阅读 · 0 评论 -
ACE框架在网络游戏服务器中的设计与应用
<br />随着计算机网络的发展,特别是因特网的出现,数字娱乐和网络游戏产业得到了蓬勃的发展,异军突起的网络游戏成为中国网络产业中的先锋。而由于信息技术的进步,计算机、手机以及不同的传媒终端等不断涌现,如何将这些众多不同的终端通过互联网进行互联互动成为一大技术难点,而这些难点的突破取决于网络游戏服务器的开发。目前在各种服务器通信软件的设计和开发中,已经广泛地使用到软件设计模式。尤其在大型的服务器通信软件开发中常会采用模块化设计。当一个庞大的服务器系统执行任务时,往往要通过其中不同的模块进行协作完转载 2010-12-31 15:48:00 · 1258 阅读 · 0 评论 -
VS2005编译ACE
ACE的安装<br />ACE的安装是一件比较麻烦的事情,这里简单的记录了我在VS2005下安装ACE的过程,希望能给大家一个参考。 安装环境: 操作系统:Windows XP 专业版 编译环境:VS2005中文版 ACE版本:ACE-5.5.1 安装过程: 下载安装包。 Ace的安装文件可以在http://download.dre.vanderbilt.edu/中下载到,由于我是在windows环境下安装并且不需要TAO等其它库,便下载了ACE-5.5.1.zip。 下载完成后将其解压。我的解压路径为转载 2011-01-04 11:10:00 · 1314 阅读 · 0 评论 -
套接字选项
有时候我们要控制套接字的行为(如修改缓冲区的大小),这个时候我们就要控制套接字的选项了. 8.1 getsockopt和setsockopt int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen) int setsockopt(int sockfd,int level转载 2012-03-12 12:49:30 · 1079 阅读 · 0 评论 -
设置非阻塞的recvfrom
int iMode= 1; //1,非阻塞;0,阻塞 ioctlsocket(socketc,FIONBIO,(u_long FAR*) &iMode);//非阻塞设置 n=recvfrom(socket,rbuf,sizeof(szbuf),0,(SOCKADDR*)&addr,&len);int ioctlsocket ( SOCKETs, lo原创 2011-12-13 16:48:23 · 3746 阅读 · 0 评论 -
怎样快速判断代理ip是否可用
在命令行下输入telnet XXX.XX.XX.XXX XX 即 telnet ipaddress port例如: telnet 213.197.81.50 3128如果连接上,说明有效原创 2011-08-03 16:40:59 · 15539 阅读 · 4 评论 -
HTTP代理协议(HTTP CONNECT)
Abstract This memo explains how to usethe Upgrade mechanism in HTTP/1.1 to initiate Transport LayerSecurity (TLS) over an existi转载 2011-08-04 14:03:01 · 9674 阅读 · 2 评论 -
HTTP协议的头信息详解
HTTP协议的头信息详解 HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用于传送WWW方式的数据,关于HTTP 协议的详细内容请参考RFC2616。HTTP协议采用了请求/响应模型。客户端向服务器发送一个请求,请求头包含请求的方法、U转载 2011-08-03 14:16:57 · 2915 阅读 · 0 评论 -
代理服务器工作原理的研究
代理服务器工作原理的研究(1) 代理服务原理代理服务器有很多种,大体来说有http,ftp,socks代理三种,其中又分透明代理和不透明代理。其中透明代理一般是网关,是硬件。所以这里讨论不透明代理。当机器通过代理服务器上网时。 代理服务器工作原理的研究(1) 代理服务原转载 2011-07-13 16:04:44 · 2092 阅读 · 0 评论 -
wireshark过滤表达式实例介绍
wireshark过滤表达式实例介绍wireshark过滤表达式实例介绍~~wireshark,实例,表达wireshark,实例,表达----------------------------------------------------------------------------------------1、wireshark基本的语法字符 /d0-9的数字转载 2011-06-28 15:42:00 · 4163 阅读 · 0 评论 -
http错误代码含义大全详解
<br /><br />http错误代码含义:<br />"100" : Continue<br />"101" : witching Protocols<br />"200" : OK<br />"201" : Created<br />"202" : Accepted<br />"203" : Non-Authoritative Information<br />"204" : No Content<br />"205" : Reset Content<br />"2转载 2011-04-08 10:03:00 · 1228 阅读 · 0 评论 -
ace-5.5下载编译
<br />1、下载<br />ACE主页:http://www.cs.wustl.edu/~schmidt/TAO.html<br />下载地址:http://download.chinaunix.net/download.php?id=337&ResourceID=209<br />文件名:ACE-5.5.tar.tar<br />大小:7.24MB<br />2、编译<br />下载解压ACE-5.5.tar.tar文件到ACE-5.5目录下,新建ACE-5.5/ACE_wrapp原创 2011-01-04 11:11:00 · 1494 阅读 · 0 评论 -
理解I/O Completion Port
<br />迎阅读此篇IOCP教程。我将先给出IOCP的定义然后给出它的实现方法,最后剖析一个Echo程序来为您拨开IOCP的谜云,除去你心中对IOCP的烦恼。OK,但我不能保证你明白IOCP的一切,但我会尽我最大的努力。以下是我会在这篇文章中提到的相关技术:<br /> I/O端口<br /> 同步/异步<br /> 堵塞/非堵塞<br /> 服务端/客户端<br /> 多线程程序设计<br /> Winsock API 2.0<br /><br />转载 2010-06-24 15:04:00 · 626 阅读 · 0 评论 -
【转】完成端口(IOCP)编程探讨
<br />本文主要探讨一下windows平台上的完成端口开发及其与之相关的几个重要的技术概念,这些概念都是与基于IOCP的开发密切相关的,对开发人员来讲,又不得不给予足够重视的几个概念:<br />1) 基于IOCP实现的服务吞吐量<br />2)IOCP模式下的线程切换<br />3)基于IOCP实现的消息的乱序问题。<br />一、IOCP简介<br /> 提到IOCP,大家都非常熟悉,其基本的编程模式,我就不在这里展开了。在这里我主要是把IOCP中所提及的概念做一个基本转载 2010-06-24 14:21:00 · 1806 阅读 · 0 评论 -
大端(Big Endian)与小端(Little Endian)详解
<br />大端(Big Endian)与小端(Little Endian)简介<br />///////////////////////////////////////////////////////<br />1. 你从哪里来?<br />端模式(Endian)的这个词出自Jonathan Swift书写的《格列佛游记》。这本书根据将鸡蛋敲开的方法不同将所有的人分为两类,从圆头开始将鸡蛋敲开的人被归为Big Endian,从尖头开始将鸡蛋敲开的人被归为Littile Endian转载 2010-06-21 09:55:00 · 1724 阅读 · 0 评论 -
很幽默的讲解六种Socket I/O模型
一:select模型二:WSAAsyncSelect模型三:WSAEventSelect模型四:Overlapped I/O 事件通知模型五:Overlapped I/O 完成例程模型六:IOCP模型 本文简单介绍了当前Windows支持的各种Socket I/O模型,如果你发现其中存在什么错误请务必赐教。一:select模型转载 2010-04-22 18:32:00 · 1099 阅读 · 0 评论 -
UDP协议的两个主要方法sendto和recvfrom详解
sendto()简述: 向一指定目的地发送数据。 #include int PASCAL FAR sendto( SOCKET s, const char FAR* buf, int len, int flags, const struct sockaddr FAR* to, int tolen); s:一个标识套接口的描述字。 buf:包含待发送转载 2010-04-13 14:50:00 · 8950 阅读 · 0 评论 -
一个UDP实现广播的小例子
UDP 是USER DATAGRAM PROTOCAL 的简称,是一种在网络上提供的无连接的传输协议。 用UDP通信有以下特点:1、 数据传输不用建立连接,所以不可靠; 2、 数据的发送是面向整个网络的,任何一台在局域网内的计算机都可以接收到相同的数据; 参考其他地方,弄一个简单的例子,希望起到抛砖引玉的作用,同时希望能给初次接触UDP之BROADCAST原创 2010-04-13 09:59:00 · 6852 阅读 · 1 评论 -
hook socket send recv的代码(zz)
(zzfrom)http://hack.gameres.com/showthread.asp?threadid=3379hook socket send recv的代码(1) 最后更新:2005.07.17 本程序演示如何拦截一个程序对send、recv函数的调用, 并把send、recv函数的参数用 WM_COPYDATA 消息发送 到监视程序中。附带演示如何拦截Direc转载 2010-03-23 23:37:00 · 6321 阅读 · 0 评论 -
SocksCap FAQ
Q: What is SocksCap?A: SocksCap(tm) automatically enables Windows-based TCP and UDP networking client applications to traverse a SOCKS firewall. SocksCap intercepts the networking calls from W转载 2010-03-18 18:10:00 · 1374 阅读 · 0 评论 -
基于iocp的SOCKET通讯软件的设计
来源不详,如果原作者认为侵权,请与我联系。转载过来参考参考用。 完成端口基本上公认为一种在windows服务平台上比较成熟和高效的IO方法,利用完成端口进行重叠I/O的技术在WindowsNT和WIndows2000上提供了真正的可扩展性。完成端口和Windows Socket2.0结合可以开发出支持大量连接的网络服务程序。 完成端口基本上公认为一种在windows服务转载 2009-06-15 11:08:00 · 1079 阅读 · 0 评论 -
I/O 完成端口动态链接库(I/O Completion Port DLL)
引言本文的目的是探索windows提供的IO完成端口模型,并比较其他可用等待IO完成的模式。大型软件经常需要上千个端口连接,如果一个端口对应于一个线程,意味着这些线程的系统花费巨大,IOCP对于“一个线程一个客户”的薄弱问题给予了一种有效的解决方式,用一些运行的线程和异步输入(输出)发送(接收)。 IOCP技术被广泛应用在不同类型的高性能服务器,比如Apache等等。我已经维护lss翻译 2009-06-16 10:44:00 · 1928 阅读 · 0 评论 -
【转】Winsock 完成端口模型简介
原文:http://dev.csdn.net/article/81/81416.shtm 摘自《Networking Programming for Microsoft Windows》第八章“完成端口”模型是迄今为止最为复杂的一种I/O模型。然而,假若一个应用程序同时需要管理为数众多的套接字,那么采用这种模型,往往可以达到最佳的系统性能!从本质上说,完成端口模型要求我们创建一个W转载 2009-06-11 17:18:00 · 779 阅读 · 0 评论 -
[转]windows completionPort (完成端口模型 )
参考了很多资料,组织这些教程,也是个复习和再学习的过程,目的是共享还有以备以后可以作为复习的纲要。这几天看了很多资料,发现这些资料的行文有2种表达发式,一种是最常见的:从技术的源头说起,直到未来发展的趋势。还有一种比较开门见山,可能功利了些:首先这种技术是为了解决什么问题,用在什么地方,有什么好处,怎么用,呵呵:)整个一个倒叙,要是再结合项目的实践就更好了,个人比较喜欢这种表达发式,所以这篇文章的转载 2009-06-11 09:59:00 · 1362 阅读 · 0 评论 -
SOCKET bind INADDR_LOOPBACK和INADDR_ANY的区别
今天写程序时候,服务器端启动了,然后客户端总是连接不上,connect返回错误号是10061,服务器积极拒绝请求。 用telnet连接一下端口,发现服务端服务没有开启,但是我程序是启动的,用netstat -a 命令看服务器是监听状态。 把流程走一遍,发现bind用的参数是INADDR_LOOPBACK,改成INADDR_ANY就OK了。 只是有些困惑,因为之前一个程原创 2010-04-23 11:50:00 · 9312 阅读 · 0 评论 -
[转载]使用原始套接字发送自定义IP包
<br />原文作者:Refdom<br /><br />这里介绍Windows Sockets的一些关于原始套接字(Raw Socket)的编程。同Winsock1相比,最明显的就是支持了Raw Socket套接字类型,通过原始套接字,我们可以更加自如地控制Windows下的多种协议,而且能够对网络底层的传输机制进行控制。 <br /><br />1、创建一个原始套接字,并设置IP头选项。 <br /><br />SOCKET sock; <br />sock = sock转载 2010-06-25 18:13:00 · 4957 阅读 · 0 评论 -
c++编程IOCP中的socket错误和资源释放处理方法
前言: 错误处理和socket释放, 是IOCP编程中的一大难点. 本文试图就IOCP设计中经常遇到的这个难题展开论述并寻找其解决方案, 事实上, 文中所述的解决方式不仅仅适用于IOCP, 它同样适用于EPOLL等多种服务器编程的网络模型中, 前提是: 领会这种处理方式的实质.正文:在使用IOCP开发时, 大家经常遇到的一个难题是与socket相关的缓冲区释放不当带来的错误, 这种错误通常是由于多次对同一个指针执行了delete操作引起的. 比如, 当在执行wsasend或wsarecv转载 2010-06-17 16:14:00 · 2302 阅读 · 1 评论 -
IOCP完成端口的一个简单封装类
/////////////////////////////////////////////////////////////////////////////////////// Iocp 头文件 #pragma once #include <winsock2.h>#pragma comment( lib, "ws2_32.lib" ) const int OP_READ = 0;const int OP_WRITE = 1;const int OP_ACCEPT =转载 2010-06-12 17:36:00 · 6615 阅读 · 2 评论 -
一个简单的IOCP(IO完成端口)服务器/客户端类
作者:Amin Gholiha 翻译:高庆余文章来源:[url]http://www.codeproject.com/KB/IP/iocp_server_client.aspx[/url] 前言:源代码使用比较高级的IOCP技术,它能够有效的为多个客户端服务,利用IOCP编程API,它也提供了一些实际问题的解决办法,并且提供了一个简单的带回复的文件传输的客户端/服务器。 1.1 要求:l 文章要求读者熟悉C++, TCP/IP, 套接字(socket)编程, MFC, 和多转载 2010-06-12 11:19:00 · 6534 阅读 · 0 评论 -
What is the best way to implement a heartbeat in C++ to check for socket connectivity?
<br />Hey gang. I have just written a client and server in C++ using sys/socket. I need to handle a situation where the client is still active but the server is down. One suggested way to do this is to use a heartbeat to periodically assert connec原创 2010-07-28 16:32:00 · 1568 阅读 · 0 评论 -
BitTorrent的协议及.torrent文件格式
BT下载要改版,在网上找到一些有关BT种子的信息:BitTorrent作为一种流行的P2P下载软件而被广泛使用.比起其他的P2P软件来,BitTorrent的优点有几点:<br />下载速度特别快.这是因为BitTorrent的协议设计精妙.下载内容不会被篡改.BitTorrent使用了RSA SHA1算法来保证文件块的正确性.上传被篡改内容的伙伴会被踢下线.Bencode编码<br />Bencode编码是一种简洁的表示数据的方法.它被BitTorrent协议广泛应用.它支持字符串,整数,列表和字典.<b转载 2010-07-27 17:40:00 · 4971 阅读 · 0 评论