现在位置: 首页 > 网络编程
2014-10-06 07:00 工业·编程 ⁄ 共 3346字 暂无评论
    TCP/IP协议是当前广域网和局域网通用的网络协议,因此,基于TCP/IP的编程就格外重要。从应用上来说,现在直接利用C层次Socket API进行TCP/IP编程的人确实越来越少了,各种现成的框架(如ACE、Java、.NET FCL)和控件(如IP*Works)大大简化了TCP/IP编程的难度。但是,如果想要在这个领域达到融会贯通的地步,不打下坚实的基础是不可想象的。正如Richard Stevens在TCP/IP Illustrated中所说,在网络编程领域...
阅读全文
    epoll是linux系统最新的处理多连接的高效率模型, 工作在两种方式下, EPOLLLT方式和EPOLLET方式。     EPOLLLT是系统默认, 工作在这种方式下, 程序员不易出问题, 在接收数据时,只要socket输入缓存有数据,都能够获得EPOLLIN的持续通知, 同样在发送数据时, 只要发送缓存够用, 都会有持续不间断的EPOLLOUT通知。 而对于EPOLLET是另外一种触发方式, 比EPOLLLT要高效很多, 对程序员的...
阅读全文
CLOSED: 表示初始状态。 LISTEN: 这个也是非常容易理解的一个状态,表示服务器端的某个SOCKET处于监听状态,可以接受连接了。 SYN_RCVD: 这个状态表示接受到了SYN报文,在正常情况下,这个状态是服务器端的SOCKET在建立TCP连接时的三次握手会话过程中的一个中间状态,很短暂,基本上用netstat你是很难看到这种状态的,除非你特意写了一个客户端测试程序,故意将三次TCP握手过程中最后一个ACK报文不予发送。因此这种状态时,当收...
阅读全文
1.通常做法 目前查了大部分网上的关于完成端口,是否连接断线,大多是通过*lpNumberOfBytes==0来判断是否有连接断线的.之前我也是这么做的.但在实际游戏平台运行过程中,偶尔有游戏玩家反映,为什么我玩着玩着就断线了,由于网络原因复杂,并没有对此判断表示过怀疑. BOOL GetQueuedCompletionStatus(   HANDLE CompletionPort,   LPDWORD lpNumberOfBytes,   PULONG_PTR lpCompletionKey,   LPOVERLAPPED* lpO...
阅读全文
    windows的socket在创建后,默认是阻塞调用的,也就是说函数recv,recvfrom,send,sendto等函数都是阻塞的;那么我们如何将他们设置成非阻塞调用呢?我们可以通过windows为我们提供的ioctlsocket 函数实现;先给出一个例子: BOOL LoadSocketSystem(void) { WORD wVersionRequested; SOCKADDR_IN addrSrv; BOOL bRet = FALSE; WSADATA wsaData;     SOCKET sockClient; int err; int i...
阅读全文
随着人们对应用程序的要求越来越高,单进程应用在许多场合已不能满足人们的要求。编写多进程/多线程程序成为现代程序设计的一个重要特点,在多进程程序设计中,进程间的通信是不可避免的。Microsoft Win32 API提供了多种进程间通信的方法,全面地阐述了这些方法的特点,并加以比较和分析,希望能给读者选择通信方法提供参考。 1 进程与进程通信 进程是装入内存并准备执行的程序,每个进程都有私有的虚拟地址空间,由代码、数据...
阅读全文
   在TCP网络应用开发中,作为客户端的程序经常需要主动连接服务器,这时你就需要建立一个Socket,然后调用connect函数连接到服务器地址。正常情况下,这并没有什么问题,但当服务器主机不存在的时候,connect函数可能会等待一分多钟才能返回。如果在主线程中调用connect函数,就会产生长时间无法响应的状况。    在现代的互联网硬件环境中,一分钟的等待有点太长了,我们需要缩短等待时间。 在Linux环境下...
阅读全文
    这篇文档我非常详细并且图文并茂的介绍了关于网络编程模型中完成端口的方方面面的信息,从API的用法到使用的步骤,从完成端口的实现机理到实际使用的注意事项,都有所涉及,并且为了让朋友们更直观的体会完成端口的用法,本文附带了有详尽注释的使用MFC编写的图形界面的示例代码。     我的初衷是希望写一份互联网上能找到的最详尽的关于完成端口的教学文档,而且让对Socket编程略有了解的人...
阅读全文
2014-05-25 05:45 工业·编程 ⁄ 共 10028字 评论 1 条
“完成端口”模型是迄今为止最为复杂的一种I/O模型。然而,假若一个应用程序同时需要管理为数众多的套接字,那么采用这种模型,往往可以达到最佳的系统性能!从本质上说,完成端口模型要求我们创建一个Win32完成端口对象,通过指定数量的线程,对重叠I/O请求进行管理,以便为已经完成的重叠I/O请求提供服务。 使用这种模型之前,首先要创建一个I/O完成端口对象,用它面向任意数量的套接字句柄,管理多个I/O请求。要做到这一点,需...
阅读全文
1. 扎实的C,C++基础知识 参考资料《C程序设计》,《C++ primer》。 2. TCP/IP协议 经典书:W.Richard Stevens 著《TCP/IP详解》三卷书,卷1是协议,卷2是实现,卷3是TCP事务协议等。还有官方的协议文档:RFC.当然也可以在网上下载电子书。 经典的开源协议分析工具:Wireshark. 简单的开源TCP/IP协议栈:LwIP,或者Linux 1.0里包含的协议栈,当然也可以看看FreeBSD的TCP/IP协议栈。 3. 实际指导网络编程的书 Winodws平台,...
阅读全文