51CTO博客开发
Error 45 error C2011: '<unnamed-tag>' : 'enum' type redefinition c:\users\administrator\飞鸽\xmsg\xtype.h 280 //定义结构及宏 struct TCP_KEEPALIVE { u_long onoff; u_long keep
参考:http://www.cnblogs.com/feisky/archive/2009/12/07/1618575.html
调用WaitForSingleObject()函数,并将“线程核心对象”作为参数,将使线程开始休眠。 DWORD WINAPI WaitForSingleObject( __in HANDLE 
NETSTAT.EXE用于显示计算机上的TCP连接表,UDP监听者表,IP协议统计 获取TCP连接表 利用GetTcpTable函数可以获得TCP连接表。获得的信息和带上-p tcp -a执行NETSTAT.EXE程序时看到的信息一样: DWORD WINAPI GetTcpTable( __out
IPCONFIG.EXE程序展示了两天信息:IPv4配置信息和IPv4配置参数。 要获得这些配置信息,利用GetNetworkParams函数即可 DWORD GetNetworkParams( __out PFIXED_INFO pF
在以太网中,所有的通信都是广播的,也就是说通常在同一个网段的所有网络接口都可以访问在物理媒体上传输的所有数据,而每一个网络接口对哦有一个唯一的硬件地址,这个硬件地址也就是网卡的MAC地址。在硬件地址和IP地址间使用ARP和RARP协议进行相互转换。 在正常情况下,一个网络接口只响应这样两种数据帧:与自己硬件地址相匹配的数据帧;向所有计算机的广播数据帧。 在一个系统中,数据的收发是由网卡来完成的
利用原始套接字可以访问位于基层的传输协议。原始套接字向程序员提供了读写IP/ICMP/IGMP以及构造特殊的IP报文的功能: SOCKET s; s=socket(AF_INET,SOCK_RAW,IPPROTO_ICMP); //或者 WSASocket(AF_INET,SOCK_RAW,IPPROTO_TCMP,NULL,0,WSA_F
设计报文广播的最初目的是用于资源发送和减少数据交互量。但事实上,由于报文广播时,同一网段内的所有主机,无论有没有参与广播应用,都必须完成对数据报的处理。被广播的UDP报文会被接收主机的系统协议栈逐层处理,知道传输层将其交付监听相应端口的应用进程或者丢弃。因此,频繁的大数据量的报文广播会严重影响网络上其他主机的正常运行。而多播方式在具有广播的优点同时,很好的解决了这个问题。 一个简
IPPROTO_IP 1.IP_HDRINCL,布尔型,仅适用于原始套接字(SOCK_RAW) 如果应用程序希望接收IP层及IP层以上的所有数据或者自行组装包含IP层在内的报文,那么可以设置该选项为TRUE。 2.IP_ADD_MEMBERSHIP,struct ip_mreq结构,用于加入多播组 该选项用于将指定网络接口上的套接字加入IP多播组,此套接字必须是AF_INE
只有通过UDP套接字才能实现广播和多播。 报文的发送 在默认情况下,UPD套接字是无法发送广播报文的,套接字启用/禁止广播是通过SOL_SOCKET->SO_BROADCAST选项来完成的。 下面代码,可以确认广播选项是默认关闭的: BOOL bBroadcast; int optlen = sizeof(bBroad
使用setsockopt和getsockopt函数可以设置或读取套接字接口的选项值 int setsockopt( __in SOCKET s, __in &
ConnectEx是一个极其必要的API,这个函数允许重叠的连续调用。 BOOL PASCAL ConnectEx( __in SOCKET s, __in 
因为需要这个函数来对传递的接收调用的缓冲区内的本地及远程地址进行解码,所有这个函数是AcceptEx的辅助函数。单个缓冲区不仅容纳连接的本地及远程地址,还容纳连接上收到的任何数据。指明要接收的任何数据将始终放在缓冲区的开始部位,地址紧随其后。不过这个地址是打包形式的地址,GetAcceptExSockaddrs函数将把他们拆开放到适当的相应地址族的结构中。 void G
对可伸缩的TCP/IP服务器而言,最有用的扩展API也就算AcceptEx了。利用这个函数,服务器可以投递一个异步调用,该调用将接受下一个传入的客户机连接。 BOOL AcceptEx( __in SOCKET 
“完成端口”模型是迄今为止最为复杂的一种I/O模型。然而,假若一个应用程序同时需要管理为数众多的套接字,那么采用这种模型,往往可以达到最佳的系统性能!但不幸的是,该模型只适用于Windows NT和Windows 2000操作系统。因其设计的复杂性,只有在你的应用程序需要同时管理数百乃至上千个套接字的时候,而且希望随着系统内安装的CPU数量的增多,应用程序的性能也可以线性提
重叠模型的基本设计原理是让应用程序使用重叠的数据结构,一次投递一个或多个WinsockI/O请求。针对那些提交的请求,在它们完成之后,应用程序可为它们提供服务。模型的总体设计以Windows重叠I/O机制为基础。这个机制可通过ReadFile和WriteFile两个函数,在设备上执行I/O操作。 要想在一个套接字上使用重叠I/O模型,首先必须创建一个设置了重叠标志的套接字。 主
和WSAAsyncSelect类似,它也允许应用程序在一个或多个套接字上,接收以事件为基础的网络事件通知。 该模型最主要的区别是在于网络事件是由对象句柄完成的,而不是通过窗口例程完成。 事件通知 事件通知模型要求应用程序针对打算使用的每一个套接字,首先创建一个事件对象。创建方法是调用WSACreateEvent函数: WSAEVENT WSACreateEvent
利用这个异步I/O模型,应用程序可在一个套接字上接收以Windows消息为基础的网络事件通知。WSAAsyncSelect和WSAEventSelect提供读写数据能力的异步通知,但它们不提供异步数据传输,重叠及完成端口提供异步数据传输。 消息通知 要想使用WSAAsyncSelect模型,在应用程序中,首先必须用CreateWindow函数创建一个窗口,再为该窗口提供一个窗口过程支持函数,亦
共有6种类型套接字I/O模型。blocking(阻塞),select(选择),WSAAsyncSelect(异步选择),WSAEventSelect(事件选择),overlapped(重叠),completionport(完成端口)。 1.select 之所以称select模型,是因为工作原理是利用select函数实现对I/O的管理。 select可用于判断套接字上是否存在数据,或者能否向一
创建一个套接字并将之设置为非阻塞模式: SOCKET s; unsigned long ul = 1; int ret; s = socket(AF_INET, SOCK_STREAM, 0); ret = i
1.getpeername 该函数用于获得通信方的套接字地址信息,该信息是关于已建立连接的那个套接字的。 int getpeername( SOCKET s,//准备连接的套接字 struct sockaddr FAR* name, int&n
无连接通信是通过UDP/IP协议完成的。数据的传输利用数据包,即离散信息包。 int recvfrom( SOCKET s, char FAR* buf, int len, int fl
套接字是传输提供程序的句柄,是一个独立类型,SOCKET类型 socket WSASocket这两个函数可以用来创建套接字 SOCKET socket( int af, int type, int protocol ); &nbs
IPv4寻址 在winsock中,应用程序通过SOCKADDR_IN结构来指定IP地址和服务端口信息,机构如下 struct sockaddr_in { short sin_family; u_short sin_port;
每个winsock程序必须加载合适的winsock DLL,调用WSAstartup函数 int WSAStartup(WORD wVersion, LPWSADATA lpWsaData); 在使用winsock编写好应用程序之后,应该调用WSACleanup函数释放所有winsock分配的资源,并取消这个应用程序挂起的wi
有时候我们希望某些常量只在类中有效,而#define定义的宏常量是全局的,不能达到我们的要求。非静态const数据成员是属于每一个对象的成员,只在某个对象的生存期内是常量,而对于整个类来说它是可变的,除非是static const。因为类可以创建多个对象,不同的对象其const数据成员的值可以不同。 不能在类声明中初始化非静态const数据成员 class A&nbs
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号