网络编程
文章平均质量分 79
暮色已沉
这个作者很懒,什么都没留下…
展开
-
C/C++网络编程中的TCP保活
以下是我从互联网上收集的资料,整理一了下,取精去粗,更通俗易懂。本文重点介绍的是使用WIN32 TCP自带的保活设置,至于应用层自定义心跳包的保活方式这里就不做介绍了。重点是让读者了解为什么要做TCP保活,这对与设计客户端与服务器交互不是很频繁的服务器程序是十分必要的(就是服务器不能确定一段时间内客户端肯定会发信息过来,或者什么时间客户端发数据过来)。TCP保活的必要性:T转载 2012-12-11 10:41:49 · 2643 阅读 · 0 评论 -
解决TCP网络传输“粘包”问题
当前在网络传输应用中,广泛采用的是TCP/IP通信协议及其标准的socket应用开发编程接口(API)。TCP/IP传输层有两个并列的协议:TCP和UDP。其中TCP(transport control protocol,传输控制协议)是面向连接的,提供高可靠性服务。UDP(user datagram protocol,用户数据报协议)是无连接的,提供高效率服务。在实际工程应用中,对可靠性和效率的转载 2012-12-11 10:30:14 · 518 阅读 · 0 评论 -
socket 五种模型理解之三---------完成端口A
相对简单的完成端口 实现demo:(没有将accept操作交出进行异步,而是阻塞在主线程里)#include #include #define PORT 5150#define MSGSIZE 1024#pragma comment(lib, "ws2_32.lib")typedef enum{ RECV_POSTED = 10, ACPT_PRE}OPERATI转载 2013-08-16 17:39:32 · 982 阅读 · 0 评论 -
socket 五种模型中 WSAWaitForMultipleEvents
WaitForMultipleObjects多个内核对象被触发时,WaitForMultipleObjects选择其中序号最小的返回。而WaitForMultipleObjects它只会改变使它返回的那个内核对象的状态。这儿又会产生一个问题,如果序号最小的那个对象频繁被触发,那么序号比它大的内核对象将得不到被处理的机会。为了解决这一问题,可以采用双WaitForMultipleOb转载 2013-08-16 14:34:41 · 5689 阅读 · 0 评论 -
socket 五种模型理解之三---------重叠I/O模型(1.事件通知形式)
关键函数 int WSARecv(SOCKET s,// 当然是投递这个操作的套接字LPWSABUF lpBuffers, // 接收缓冲区,与Recv函数不同// 这里需要一个由WSABUF结构构成的数组DWORD dwBufferCount, // 数组中WSABUF结构的数量LPDWORD lpNumberOfBytesRecvd, // 如果接收操作立即原创 2013-08-15 16:55:51 · 1994 阅读 · 0 评论 -
socket 五种模型理解之一---------select模型
一、选择模型,即select模型;Echo服务器#include#include #definePORT 5150#defineMSGSIZE 1024 #pragmacomment(lib, "ws2_32.lib") int g_iTotalConn= 0;SOCKETg_CliSocketArr[FD_SETSIZE]; DWO转载 2013-08-12 11:02:33 · 2004 阅读 · 0 评论 -
socket 五种模型理解之二---------异步选择模型
关键函数:WSAAsyncSelect (SOCKET s,HWND hWnd,unsigned int wMsg,long lEvent);具体注释:http://baike.baidu.com/view/573396.htm本函数用来请求Windows Sockets DLL为窗口句柄发一条消息——无论它何时检测到由lEvent参数指明的网络事件.要发送的消转载 2013-08-13 17:01:49 · 2270 阅读 · 0 评论 -
TCP客户端 长连接策略
不久前,我的Socket Client 程序遇到了一个非常尴尬的错误。它本来应该在一个 socket 长连接上持续不断地向服务器发送数据,如果 socket 连接断开,那么程序会自动不断地重试建立连接。 有一天发现程序在不断尝试建立连接,但是总是失败。用netstat 查看,这个程序竟然有上千个socket 连接处于CLOSE_WAIT 状态,以至于达到了上限,所以转载 2012-12-17 15:32:41 · 11271 阅读 · 0 评论 -
诡异:bind()函数出现WSAEFAULT(10014) 错误
编译器:VS2008偶将 UDP 封装成类,绑定的主机地址,作为类成员class CUDPSocket{public: CUDPSocket(); ~CUDPSocket(); bool InitSocket(); int SendData(char *buffer,int len,sockaddr_in RecieverAddr); int原创 2012-12-11 16:46:07 · 2469 阅读 · 1 评论 -
http协议详解《转》
http协议学习系列1. 基础概念篇1.1 介绍 HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC 1945定义转载 2013-12-16 15:25:38 · 725 阅读 · 0 评论