accept 函数_case when函数

accept 函数_case when函数2.关于AcceptEx  使用此函数时,要包含头文:Mswsock.h,同时要链接:Mswsock.lib。可在源程序中加入下面的语句,这样在编译时,将自动链接Mswsock.lib。  #pragmacomment(lib,”Mswsock.lib”)    下面是使用AcceptEx函数的示例代码:  #defineSTRICT  #define_WIN32_WINNT0x050

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用
2. 关于AcceptEx

  使用此函数时,要包含头文:Mswsock.h,同时要链接:Mswsock.lib。可在源程序中加入下面的语句,这样在编译时,将自动链接Mswsock.lib。

  #pragma comment(lib,” Mswsock.lib”)

  

  下面是使用AcceptEx函数的示例代码:

  #define STRICT

  #define _
WIN32_WINNT 0x0500 // Windows 2000 or later

  #define WIN32_LEAN_AND_MEAN

  

  #include

  #include

  #include

  

  #pragma comment(lib,”Ws2_32.lib”)

  #pragma comment(lib,”Mswsock.lib”)

  int main()

  {

  const int BUFSIZE = 48;

  LPFN_ACCEPTEX lpfnAcceptEx = NULL;

  GUID GuidAcceptEx = WSAID_ACCEPTEX;

  
DWORD dwBytes = 0;

  SOCKET ListenSocket = INVALID_SOCKET;

  SOCKET
ClientSocket = INVALID_SOCKET;

  HANDLE hCompPort = INVALID_HANDLE_VALUE;

  OVERLAPPED
ol;

  char buf[BUFSIZE];

  

  //
Init WinSock Lib ….

  

  ListenSocket = WSASocket(AF_IPX, SOCK_STREAM, NSPROTO_SPX, NULL, 0, WSA_FLAG_OVERLAPPED);

  ClientSocket = WSASocket(AF_IPX, SOCK_STREAM, NSPROTO_SPX, NULL, 0, WSA_FLAG_OVERLAPPED);

  

  // Bind && Listen ….

  

  // Associate the listening socket with the completion port

  CreateIoCompletionPort((HANDLE)ListenSocket, hCompPort, (u_long)0, 0);

 

  

  // Get AccpetEx Function

  WSAIoctl(ListenSocket,

  SIO_GET_EXTENSION_FUNCTION_POINTER,

  &GuidAcceptEx,

  sizeof(GuidAcceptEx),

  &lpfnAcceptEx,

  sizeof(m_WorkInfo.AcceptInfo.lpfnAcceptEx),

  &dwBytes,

  NULL,

  NULL

  );

  

  ZeroMemory(buf,BUFSIZE);

  ZeroMemory(&ol,sizeof(OVERLAPPED));

  // Post Accept Message

  lpfnAcceptEx(ListenSocket,

  ClientSocket,

  buf,

  0,

  sizeof(SOCKADDR_IN) + 16,

  sizeof(SOCKADDR_IN) + 16,

  &dwBytes,

  &ol

  );

  }

  需要注意的是,通过WSAIoctl获取AcceptEx函数指针时,只需要传递给WSAIoctl一个有效的SOCKET即可,该Socket的类型不会影响获取的AcceptEx函数指针。

  如果不希望AcceptEx建立连接后等待用户发送数据,那么必须将第四个参数设为0。第5、6参数必须是对应SOCKET的地址类型的大小再加上16个字节。

  为了使服务器能较好的处理用户连接请求,可采取如下两种策略:

  A.设定两个界限值,使系统未处理的Accept操作保持在一个固定水平。推荐上限为10;

  B.通过WSAEventSelect函数监听ListenSocket上的FD_ACCEPT事件。

  当关闭完成端口时,如果还有未处理的Accepte操作,应该先关闭ListenSocket,然后在IOCP中,处理这些Accept操作(进行资源释放等),切记不要强行终止那些没有处理的Accept操作,否则会造成内存泄漏。

  

  为防止恶意用户(建立连接后,不发送数据),可设置ListenSocket的SO_CONNECT_TIME属性。

  

  如果希望ClientSocket具有和ListenSocket相同的属性,需要对ClientSocket调用SO_UPDATE_ACCEPT_CONTEXT。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/187929.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 华为海关单据识别服务–基于文字识别技术[通俗易懂]

    华为海关单据识别服务–基于文字识别技术[通俗易懂]业务背景目前,华为公司在海外设有4大供应中心,海关报关单全球一年有35w份左右(其中中国进口5w份,出口15w份,及香港进出口10w份,其它子公司5w份左右)。现在的单据处理方式还停留在通过人工方式将单据内容手动录入到系统中,人工录入的方式除了效率低以外,还存在员工疏忽或者疲劳导致的误操作。如何快速、准确的处理如此数量庞大的单据成为了供应链的一大诉求。问题描述海关报关单据是单据中较为常见的一…

  • 最全的ios系统导出微信聊天记录&生成词云教程

    首先放一张我的iPhone手机导出微信聊天记录生成的词云效果图(个别敏感词汇请大家自行忽略hhh):对于如何导出手机上的微信聊天记录,网上绝大部分教程提到的“楼月微信聊天记录导出恢复助手”和“手机博士微信聊天记录查看”等软件都是收费的,免费版本只能查看很少的几条聊天记录并且不能导出。在这里提供一种绝对免费的方法可以方便地导出微信聊天记录,后面附上根据聊天记录生成词云的教程。由于我个人的手机是i…

  • ubuntu12.04 安装rabbitvcs[通俗易懂]

    ubuntu12.04 安装rabbitvcs[通俗易懂]习惯了在windows下的Tortoisesvn,所以转到ubuntu下面很不习惯命令行的svn。而且,个人感觉如果需要showlog和diff的话都很不爽。今天和一个朋友聊天,他推荐我使用RabbitVCS。类似与Tortoisesvn。安装RabbitVCS的方法步骤如下:1、sudoadd-apt-repositoryppa:rabbitvcs/ppa     #将rab

  • PhpStorm激活成功教程版及使用教程

    PhpStorm激活成功教程版及使用教程本文引自网络,仅供本人学习使用之用,感谢网友的分享PhpStormPhpStorm 是JetBrains公司开发的一款商业的PHP集成开发工具,旨在提高用户效率,可深刻理解用户的

  • 强化学习(Q-Learning,Sarsa)

    强化学习(Q-Learning,Sarsa)ReinforcementLearning监督学习–>非监督学习–>强化学习。监督学习:拥有“标签”可监督算法不断调整模型,得到输入与输出的映射函数。非监督学习:无“标签”,通过分析数据本身进行建模,发掘底层信息和隐藏结构。但是1.标签需要花大量的代价进行收集,在有些情况如子任务的组合数特别巨大寻找监督项是不切实际的。2.如何更好的理解数据,学习到具体的映射而不仅仅是数据的底…

  • pycharm配置opencv环境_pycharm opencv安装

    pycharm配置opencv环境_pycharm opencv安装1.cmdpipinstallopencv-python-ihttps://pypi.tuna.tsinghua.edu.cn/simple后续可能会报pip版本低按指示升级记得-ixxxx(同上)装完后可以在cmdpythonimportcv2试试能往下走就OK2.新建Python工程不要默认“虚拟机”那个cmdpythonimportsysprint(sys.path)找到相应的.exe…

    2022年10月28日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号