网络编程
zhubo_1117
这个作者很懒,什么都没留下…
展开
-
socket编程的select模型
在掌握了socket相关的一些函数后,套接字编程还是比较简单的,日常工作中碰到很多的问题就是客户端/服务器模型中,如何让服务端在同一时间高效的处理多个客户端的连接,我们的处理办法可能会是在服务端不停的监听客户端的请求,有新的请求到达时,开辟一个新的线程去和该客户端进行后续处理,但是这样针对每一个客户端都需要去开辟一个新的线程,效率必定底下。 其实,socket编程提供了很多的模型来转载 2015-03-29 18:54:34 · 425 阅读 · 0 评论 -
select()函数的作用
select()在SOCKET编程中还是比较重要的,可是对于初学SOCKET的人来说都不太爱用select()写程序,他们只是习惯写诸如 conncet()、accept()、recv()或recvfrom()这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用select()就可转载 2015-03-29 18:57:26 · 1130 阅读 · 0 评论 -
网络通讯模型
老陈有一个在外地工作的女儿,不能经常回来,老陈和她通过信件联系。他们的信会被邮递员投递到他们的信箱里。 这和Socket模型非常类似。下面就以老陈接收信件为例讲解Socket IO模型。一:select模型 老陈非常想看到女儿的信。以至于他每隔10分钟就下楼检查信箱,看是否有女儿的信,在这种情况下,“下楼检查信箱”然后回到楼上耽误了老陈太多的时间,以至于老陈无法做其他工作。转载 2015-04-09 17:28:52 · 621 阅读 · 0 评论 -
开源C/C++网络库比较 ace &&bosst
ACE是一个大型的中间件产品,代码20万行左右,过于宏大,一堆的设计模式,架构了一层又一层,使用的时候, 要根据情况,看你从那一层来进行使用。 在开源的C/C++网络库中, 常用的就那么几个, 在业界知名度最高的, 应该是ACE了, 不过是个重量级的大家伙, 轻量级的有libevent, libev, 还有 Boost的ASIO。 ACE是一个大型的中间件产品,代码20万行左右转载 2015-07-13 17:04:05 · 527 阅读 · 0 评论 -
Socket模型详解(转)
两种I/O模式1、 两种I/O模式阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序。套接字默认为阻塞模式。可以通过多线程技术进行处理。非阻塞模式:执行I/O操作时,Winsock函数会返回并交出控制权。这种模式使用起来比较复杂,因为函数在没有运行完成就进行返回,会不断地返回 WSAEWOULDBLOCK错误。但功能强大。 如果你想在Wind转载 2015-12-12 11:32:01 · 1018 阅读 · 0 评论 -
手把手教你玩转SOCKET模型:完成端口(Completion Port)详解
这篇文档我非常详细并且图文并茂的介绍了关于网络编程模型中完成端口的方方面面的信息,从API的用法到使用的步骤,从完成端口的实现机理到实际使用的注意事项,都有所涉及,并且为了让朋友们更直观的体会完成端口的用法,本文附带了有详尽注释的使用MFC编写的图形界面的示例代码。 我的初衷是希望写一份互联网上能找到的最详尽的关于完成端口的教学文档,而且让对Socket编程略有了解的人都能够看得懂,转载 2015-12-12 12:36:01 · 1789 阅读 · 1 评论 -
UDP高级技术(并发服务器)
通常所见的的TCP服务器都是并发实现的,即服务同时处理多个请求,而不是等待前一个完成再处理下一个请求,这个实现得益于TCP的listen()与connect()的分工处理机制。具体为,服务器监听来自客户的连接,当一个请求到来时,服务器fork()一个子进程,处理该请求,然后父进程继续监听外部请求。 但在UDP中,没有这种监听和连接机制,所以它必须等待前一处理完成才能继续处理下一个客户的转载 2016-01-22 15:24:28 · 3205 阅读 · 0 评论 -
UDP打洞原理
本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.许多P2P软件比如SKYPE,QQ,电驴之类需要不同内网的两台机子进行通信,而路由器的NAT机制决定了内网访问外网容易,而外网访问内网困难,那如何才能做到这一点呢?有办法------打洞!具体实现方法需要一台服务器,现在假设两台内网PC,A和B想用端口40000通信,网关分转载 2016-01-08 18:05:11 · 561 阅读 · 0 评论 -
http请求报文介绍
1、请求报文介绍一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成,下图给出了请求报文的一般格式。(1)请求行请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。例如,GET /index.html HTTP/1.1。HTTP协议的请求方法有GET、POST、HEAD、PUT转载 2016-07-22 10:52:16 · 1550 阅读 · 0 评论 -
socket编程的select模型
在掌握了socket相关的一些函数后,套接字编程还是比较简单的,日常工作中碰到很多的问题就是客户端/服务器模型中,如何让服务端在同一时间高效的处理多个客户端的连接,我们的处理办法可能会是在服务端不停的监听客户端的请求,有新的请求到达时,开辟一个新的线程去和该客户端进行后续处理,但是这样针对每一个客户端都需要去开辟一个新的线程,效率必定底下。 其实,socket编程提供了很多的模型来转载 2014-11-18 15:59:02 · 451 阅读 · 0 评论 -
socket关闭的close和shutdown区别
http://blog.csdn.net/cwmbecoming/article/details/3265343\socket关闭close和shutdownsocket关闭有2个close,shutdown他们之间的区别:close-----关闭本进程的socket id,但链接还是开着的,用这个socket id的其它进程还能用这个链接,能读或写这个sock转载 2014-09-25 10:06:55 · 523 阅读 · 0 评论 -
跨线程使用CSocket
CSocket断言错误:ASSERT(pState->m_hSocketWindow != NULL);起因:在套接字处于连接或者发送状态时,试图关闭套接字,于是在这个断言语句处发生中断。原因分析::微软官方解释如下:http://support.microsoft.com/kb/140527/en-usThis assertion failure occurs b转载 2014-09-26 13:15:03 · 2967 阅读 · 1 评论 -
TCP/IP 连接三次握手与释放四次握手
1、建立连接协议(三次握手)(1)客户端发送一个带SYN标志的TCP报文到服务器。这是三次握手过程中的报文1。(2)服务器端回应客户端的,这是三次握手中的第2个报文,这个报文同时带ACK标志和SYN标志。因此它表示对刚才客户端SYN报文的回应;同时又标志SYN给客户端,询问客户端是否准备好进行数据通 讯。(3)客户必须再次回应服务段一个ACK报文,这是报文段3。2、连接转载 2013-10-24 21:11:19 · 1235 阅读 · 0 评论 -
千兆网线和百兆网线的做法一样吗
千兆交叉网线的制作与百兆不同,制作方法如下:1对3,2对6,3对1,4对7,5对8,6对2,7对4,8对5例如:一端为:半橙、橙,半绿、兰,半兰、绿,半棕、棕;另一端:半绿、绿,半橙、半棕、棕,橙,兰,半兰 千兆5类或超5类双绞线的形式与百兆网线的形式相同,也分为直通和交叉两种。直通网线与我们平时所使用的没有什么差别,都是一一对应的。但是传统的百兆网络只用到4 根线缆来传输,而千兆网络要转载 2013-12-19 21:47:27 · 1088 阅读 · 0 评论 -
ioctlsocket函数说明
http://baike.baidu.com/view/569202.htm?fr=aladdin转载 2014-07-24 15:02:37 · 4052 阅读 · 0 评论 -
Socket 阻塞与非阻塞模式
http://blog.sina.com.cn/s/blog_63e164b00100mfvu.html阻塞模式Windows套接字在阻塞和非阻塞两种模式下执行I/O操作。在阻塞模式下,在I/O操作完成前,执行的操作函数一直等候而不会立即返回,该函数所在的线程会阻塞在这里。相反,在非阻塞模式下,套接字函数会立即返回,而不管I/O是否完成,该函数所在的线程会继续运行。转载 2014-07-24 15:03:50 · 841 阅读 · 0 评论 -
tcp为什么要三次握手,而不能二次握手?
http://bbs.csdn.net/topics/390706512?page=1谢希仁版《计算机网络》中的例子是这样的,“已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是转载 2014-07-24 16:47:19 · 6802 阅读 · 1 评论 -
TCP心跳机制
所谓的心跳包就是客户端定时放送简单的信息给服务器端,告诉它我还在而已。代码就是每隔几分钟发送一个固定信息给服务器端,服务器端回复一个固定信息。如果服务器端几分钟后没有收到客户端信息则视客户端断开。比如有些通信软件长时间不适用,要想知道它的状态是在线还是离线,就需要心跳包,定时发包收包。 心跳包之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活在。事转载 2014-07-24 17:26:11 · 693 阅读 · 0 评论 -
什么是带外数据(MSG_OOB), 为什么这种方式不好呢?
2.15 什么是查看数据(MSG_PEEK), 为什么这不好?原文地址:http://tangentsoft.net/wskfaq/newbie.html#peekingPeeking 就是预先查看TCP数据流: 当你在recv()中使用MSG_PEEK的标签, 函数会返回栈缓冲中的数据大小而不从缓冲中移出数据.(你也可以通过用ioctlsocket()设置选项FIONREAD来实现另转载 2014-07-30 11:10:53 · 3552 阅读 · 0 评论 -
TCP保活(TCP keepalive)
TCP保活的缘起 双方建立交互的连接,但是并不是一直存在数据交互,有些连接会在数据交互完毕后,主动释放连接,而有些不会,那么在长时间无数据交互的时间段内,交互双方都有可能出现掉电、死机、异常重启等各种意外,当这些意外发生之后,这些TCP连接并未来得及正常释放,那么,连接的另一方并不知道对端的情况,它会一直维护这个连接,长时间的积累会导致非常多的半打开连接,造成端系统资源的消耗和转载 2014-08-05 09:17:33 · 7997 阅读 · 0 评论 -
MSG_OOB、MSG_PEEK、MSG_DONTROUTE
在使用TCP编程的send和receive函数时,转载 2014-07-30 11:00:03 · 8236 阅读 · 0 评论 -
套接字中send和recv函数详解
recv 和send的前3个参数等同于read和write。flags参数值为0或: flags说明recvsend MSG_DONTROUTE绕过路由表查找 • MSG_DONTWAIT仅本操作非阻塞 • • MSG_OOB转载 2014-07-30 11:12:22 · 6669 阅读 · 0 评论 -
三次握手 四次握手 与socket函数的关系
我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?当你用QQ聊天时,QQ进程怎么与服务器或你好友所在的QQ进程通信?这些都得靠socket?那什么是socket?socket的类型有哪些?还有socket的基本函数,这些都是本文想介绍的。本文的主要内容如下:作者:吴秦出处:http://www.cnblogs.com...转载 2019-08-20 14:54:36 · 489 阅读 · 0 评论