网络编程
Answer-3
学如春起之苗,不见其增,日有所长!
展开
-
tcp连接超时处理
设置connect超时很简单,CSDN上也有人提到过使用select,但却没有一个令人满意与完整的答案。偶所讲的也正是select函数,此函数集成在winsock1.1中,简单点讲,"作用使那些想避免在套接字调用过程中被锁定的应用程序,采取一种有序的方式,同时对多个套接字进行管理"(《Windows网络编程技术》原话)。使用方法与解释请见《Windows网络编程技术》。 在使用此函数前,需先转载 2016-01-26 10:20:11 · 6958 阅读 · 0 评论 -
网络编程中的关键问题总结
内容目录:连接建立连接断开消息到达发送消息消息发送完毕其它问题参考网络编程中的关键问题总结总结下网络编程中关键的细节问题,包含连接建立、连接断开、消息到达、发送消息等等;连接建立包括服务端接受 (accept) 新连接和客户端成功发起 (connect) 连接。 accept接受连接的问题在本文最后会聊到,这里谈谈connect的关键点; 使用非阻塞转载 2017-03-01 17:11:31 · 330 阅读 · 0 评论 -
Reactor事件驱动的两种设计实现:面向对象 VS 函数式编程
内容目录:Reactor实现架构对比面向对象的Reactor方案设计函数式编程的Reactor设计示例对比两者的时序图对比结论Reactor事件驱动的两种设计实现:面向对象 VS 函数式编程这里的函数式编程的设计以muduo为例进行对比说明;Reactor实现架构对比面向对象的设计类图如下: 函数式编程以muduo为例,设计类图如下: 面向对转载 2017-03-01 17:10:12 · 320 阅读 · 0 评论 -
Socket select模型
Windows socket select模型开发。 套接字select模型是一种比较常用的IO模型。利用该模型可以使Windows socket应用程序可以同时管理多个套接字。 使用select模型,可以使当执行操作的套接字满足可读可写条件时,给应用程序发送通知。收到这个通知后,应用程序再去调用相应的Windows socket API去执行函数调用转载 2017-03-07 14:47:20 · 375 阅读 · 0 评论 -
Socket模型
两种I/O模式一.选择模型二.异步选择三.事件选择四.重叠I/O模型五.完成端口模型五种I/O模型的比较 两种I/O模式1、 两种I/O模式阻塞模式:执行I/O操作完成前会一直进行等待,不会将控制权交给程序。套接字默认为阻塞模式。可以通过多线程技术进行处理。非阻塞模式:执行I/O操作时,Wi转载 2017-03-07 15:03:19 · 272 阅读 · 0 评论 -
socket阻塞与非阻塞,同步与异步
转自:http://blog.csdn.net/hguisu/article/details/7453390socket阻塞与非阻塞,同步与异步作者:huangguisu1. 概念理解 在进行网络编程时,我们常常见到同步(Sync)/异步(Async),阻塞(Block)/非阻塞(Unblock)四种调用方式:转载 2017-03-30 10:27:28 · 217 阅读 · 0 评论 -
Windows完成端口(IOCP)
http://blog.csdn.net/piggyxp/article/details/6922277转载 2017-03-30 14:43:16 · 274 阅读 · 0 评论 -
主流服务器框架总结
libevent 编辑Libevent 是一个用C语言编写的、轻量级的开源高性能网络库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络,不如 ACE 那么臃肿庞大;源代码相当精炼、易读;跨平台,支持 Windows、 Linux、 *BSD 和 Mac Os;支持多种 I/O 多路复用技术, epoll、 poll、 dev/poll、 se转载 2017-04-20 17:14:56 · 1172 阅读 · 0 评论 -
Libevent源码分析
http://blog.csdn.net/column/details/libevent-src.html?&page=2转载 2018-01-29 09:13:54 · 153 阅读 · 0 评论 -
TCP解决connect函数的超时问题
在一个TCP套接口被设置为非阻塞之后调用connect,connect会立即返回EINPROGRESS错误,表示连接操作正在进行中,但是仍未完成;同时TCP的三路握手操作继续进行;在这之后,我们可以调用select来检查这个链接是否建立成功;非阻塞connect有三种用途:1.我们可以在三路握手的同时做一些其它的处理.connect操作要花一个往返时间完成,而且可以是在任何地方,从几个毫秒的局原创 2016-01-27 10:26:35 · 13598 阅读 · 3 评论 -
关于TCP的粘包问题
简单的说就是通过TCP协议发送了多条独立的数据,但接收的时候,有些数据不幸的合并成了一个。比如客户端向服务器发送两个命令:”Start”、”Parameter[x.x.x]”,第一个命令的含义是开始,第二个命令的含义是启动参数。但是服务器接收的时候,很可能不是分两次接收,而是一次接收到”StartParameter[x.x.x]”,这下全乱了。UDP丢包是因为数据包在传送过程中丢失了 而T转载 2016-01-26 17:30:01 · 336 阅读 · 0 评论 -
WSAAsyncSelect模型
WSAAsyncSelect模型允许应用程序以Windows消息的方式接收网络事件通知。许多对性能要求不高的网络应用程序都采用WSAAsyncSelect模型,MFC的CSocket类也使用了它。 WSAAsyncSelect自动把套接字设为非阻塞模式,并且为套接字绑定一个窗口句柄,当有网络事件发生时,便向这个窗口发送消息。 intWSAAsyncSel转载 2016-01-25 16:35:39 · 236 阅读 · 0 评论 -
Tcp设置发送和接收超时
linux和windows下用setsockopt设置SO_SNDTIMEO,SO_RCVTIMEO的参数的一点区别 UDP的socket在某些情况:如对方关闭时,本地可能sendto不出去数据,然后recvfrom就会被阻塞,这时就需要设置 这两个参数的值提高程序质量。linux: struct timeval timeout={3,0};//3s转载 2016-01-26 10:22:50 · 9055 阅读 · 1 评论 -
为什么TCP是三次握手
TCP 三次握手首先简单介绍一下TCP三次握手 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服转载 2016-01-26 11:13:40 · 300 阅读 · 0 评论 -
TCP的三次握手和四次挥手
建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:先来看看如何建立连接的。首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文后也向Server段发生ACK报文,并分配资源,这样TCP连接就建立了。那如何断开连接呢?简单的过程如下:转载 2016-01-26 11:16:09 · 282 阅读 · 0 评论 -
TCP为什么是四次挥手
TCP 3次握手客户端向服务器发送一个SYN(包含了SYN,SEQ)。当服务器接收到客户端发过来的SYN时,会向客户端发送一个SYN+ACK的数据包,其实ACK的ack等于上一次发送SYN数据包的(SYN+SEQ)。当客户端接收到服务器发送过来的SYN+ACK数据包时,当接收到后向服务器发送ACK的数据包,此时ACK数据包中的ack值等于上一次SYN中的seq+syn。当服务器转载 2016-01-26 11:26:59 · 7344 阅读 · 1 评论 -
TCP的三次握手和四次挥手详解
为什么需要“三次握手” 在谢希仁著《计算机网络》第四版中讲“三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端,因而产生错误”。在另一部经典的《计算机网络》一书中讲“三次握手”的目的是为了解决“网络中存在延迟的重复分组”的问题。这两种不用的表述其实阐明的是同一个问题。 谢希仁版《计算机网络》中的例子是这样的,“已失效的连接转载 2016-01-26 11:29:55 · 599 阅读 · 0 评论 -
TCP滑动窗口机制
TCP通过滑动窗口机制检测丢包,并在丢包发生时调整数据传输速率。滑动窗口机制利用数据接收端的接收窗口来控制数据流。接收窗口值由数据接收端指定,以字节数形式存储于TCP报文头,并告知传输设备有多少数据将会存储在TCP缓冲区。缓冲区就是数据暂时放置的地方,直至传递至应用层协议等待处理。因此,发送端每次只能发送Window Size字段指定的数据量。为了使发送端继续传送数据,接收端必须发送确认信转载 2016-01-26 17:00:03 · 6339 阅读 · 0 评论 -
MTU最大传输单元
最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协议的某一层上面所能通过的最大数据报大小(以字节为单位)。最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。转载 2016-01-26 17:10:07 · 470 阅读 · 0 评论 -
TCP/IP学习
http://blog.csdn.net/column/details/15153.html?原创 2018-02-23 10:18:06 · 198 阅读 · 0 评论