王朝百科
分享
 
 
 

AcceptEx

王朝百科·作者佚名  2010-08-09  
宽屏版  字体: |||超大  

平台SDK:Windows套接字

AcceptEx

Windows套接字AcceptEx函数接受一个新的连接,返回本地和远程地址,并接收由客户端应用程序发送的第一块数据。Windows 95/98不支持AcceptEx函数。

注意:此函数是一个Microsoft特定的扩展,Windows Sockets规范。有关详细信息,请参阅Microsoft扩展和Windows Sockets 2。

BOOL AcceptEx(

SOCKET sListenSocket,

SOCKET sAcceptSocket,

PVOID lpOutputBuffer,

DWORD dwReceiveDataLength,

DWORD dwLocalAddressLength,

DWORD dwRemoteAddressLength,

LPDWORD lpdwBytesReceived,

LPOVERLAPPED lpOverlapped

);

参数

sListenSocket

[在]侦听套接字。服务器应用程序在这个套接字上等待连接。

sAcceptSocket

[在]被接受的连接相关联的套接字。

lpOutputBuffer

[在]指向一个缓冲区,它接收了一个新的连接发送数据的第一个块,该服务器的本地地址,客户端的远程地址。接收数据写入到的偏移量0开始的第一部分的缓冲区,而地址写入缓冲区的后半部。如果此参数设置为NULL,将不会得到执行,也不会在本地或远程的地址是通过GetAcceptExSockaddrs函数调用使用。

dwReceiveDataLength

[在]在lpOutputBuffer字节数,将用于实际收到的数据缓冲区的开始。这一大小应不包括服务器的本地地址的大小或客户端的远程地址,他们被追加到输出缓冲区。如果dwReceiveDataLength是零,接受该连接将不会导致接收操作。相反,AcceptEx尽快完成连接到达,没有任何等待数据。

dwLocalAddressLength

[在]为本地地址信息保留的字节数。此值必须至少有16个字节比所使用的传输协议的最大地址长度多。

dwRemoteAddressLength

[在]为远程地址的信息保留的字节数。此值必须至少有16个字节比所使用的传输协议的最大地址长度多。

lpdwBytesReceived

[out]指向一个DWORD接收的字节数接收。此参数只有在设置操作完成同步。如果它返回ERROR_IO_PENDING和完成后,那么这个DWORD是从来没有,你必须获得从完成通知机制读取的字节数。

lpOverlapped

[在]一个OVERLAPPED结构,用于处理请求。此参数必须指定,它不能为空。

返回值

如果没有错误发生,AcceptEx函数成功完成和真正的返回值。

如果函数失败,AcceptEx返回FALSE。该WSAGetLastError函数可以调用返回扩展的错误信息。如果WSAGetLastError返回ERROR_IO_PENDING,那么这次行动成功启动并仍在进行中。

备注

在AcceptEx功能结合到一个单一的API中的几个socket函数/内核过渡。在AcceptEx函数,当成功的,执行三项任务:

一个新的连接被接受。

既为连接的本地和远程地址返回。

由远程发送数据的第一个块的欢迎。

一个程序可以连接到一个套接字更快地使用AcceptEx,而不是接受的功能。

一个单一的输出缓冲区接收数据:本地套接字地址(服务器)和远程套接字地址(客户端)。

使用单一的缓冲区可以提高性能,但GetAcceptExSockaddrs必须调用函数解析到它的三个不同部分的缓冲区。

为本地和远程地址缓冲区的大小必须是16个字节比为使用传输协议地址是因为在内部格式写入sockaddr结构规模庞大。例如,一个SOCKADDR_IN大小(地址结构的TCP / IP协议)是16个字节。因此,至少32个字节的缓冲区的大小必须被指定为本地和远程地址。

AcceptEx函数使用的重叠与Windows套接字1.1的I / O,接受功能。如果应用程序使用AcceptEx,它可以与服务的线程数量相对较少的不少客户。如同所有的Win32函数重叠,无论是Win32事件或完成端口可以被用来作为完成通知机制。

AcceptEx之间的另一个功能和Windows套接字1.1的主要区别是,接受功能的AcceptEx函数需要调用者已经有两个套接字:

一个指定的套接字听。

一个指定的套接字接受连接。

该sAcceptSocket参数必须是一个开放的插座,既不是约束,也不连接。

该GetQueuedCompletionStatus函数或GetOverlappedResult函数lpNumberOfBytesTransferred参数表明在请求接收的字节数。

当此操作成功完成,sAcceptHandle可以通过,但对下列功能只:

ReadFile

WriteFile

发送

recv

TransmitFile

关闭套接字

注意:如果您有一个名为同时与TF_DISCONNECT和TF_REUSE_SOCKET标志,指定套接字的TransmitFile函数已经回到了其中的约束,也不是没有连接的状态。然后,您可以通过套接字句柄在sAcceptSocket参数的AcceptEx函数。

当AcceptEx函数返回时,套接字sAcceptSocket是一个连接套接字在默认状态。该插座sAcceptSocket不是继承与sListenSocket参数相关的套接字,直到SO_UPDATE_ACCEPT_CONTEXT是套接字上设置的属性。使用Setsockopt函数来设置SO_UPDATE_ACCEPT_CONTEXT选项,指定sAcceptSocket的套接字句柄和sListenSocket作为选项的值。

例如:

error= setsockopt(sAcceptSocket,

SOL_SOCKET,

SO_UPDATE_ACCEPT_CONTEXT,

(char*)&sListenSocket,

sizeof(sListenSocket));

使用与SO_CONNECT_TIME选项来检查是否连接已接受了getsockopt功能。如果它已被接受,您可以判断多久连接已建立。返回值是秒数套接字已连接。如果套接字未连接,getsockopt返回0xFFFFFFFF的。这样的检查是必要的联系,看看是否连接已建立了一段时间没有收到任何数据。我们建议您终止这些连接。

例如:

int seconds;

BYTE opt = sizeof(seconds);

error= getsockopt(sAcceptSocket,SOL_SOCKET,SO_CONNECT_TIME,

(char*)&seconds,(int)&opt);

if(error= NO_ERROR)(

printf(“getsockopt(SO_CONNECT_TIME)失败:%d N”的,WSAGetLastError());

exit(1);

注释的ATM

没有与连接设置相关的重要问题时,使用Windows套接字2异步传输模式(ATM)。请参阅Windows套接字2备注部分承担重要的ATM连接设置信息函数文档。

需求

系统版本:要求Windows套接字1.1或更高版本。微软专用的扩展。

头文件:#include Mswsock.h。

导入库:Mswsock.lib。

建于2009年5月12日,2000Requirements

版本:要求Windows套接字1.1或更高版本。微软专用的扩展。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格​十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有