WSAsocket

WSASocket写的简单的C/S端 /* * 服务器端 */ #include #include #include #pragma comment(lib,"Ws2_32.lib") SOCKET sockSvc;//服务器端socket SOCKET sockConnect; //连接用的socket DWORD WINAPI Recv 阅读详情

1. windows的socket解析

1.1. IoCompletion

// Windows Socket API 缩写为 WSA
//功能:创建完成端口和关联完成端口
HANDLE WINAPI CreateIoCompletionPort(
   __in   HANDLE FileHandle,              // 已经打开的文件句柄或者空句柄,一般是客户端的句柄
   __in   HANDLE ExistingCompletionPort,  // 已经存在的IOCP句柄
   __in   ULONG_PTR CompletionKey,        // 完成键,包含了指定I/O完成包的指定文件
   __in   DWORD NumberOfConcurrentThreads // 真正并发同时执行最大线程数,一般推介是CPU核心数*2
);
/*
功能:获取队列完成状态
返回值:调用成功,则返回非零数值,相关数据存于lpNumberOfBytes、lpCompletionKey、lpoverlapped变量中。失败则返回零值。
*/
BOOL GetQueuedCompletionStatus(
    HANDLE   CompletionPort,           //完成端口句柄
    LPDWORD   lpNumberOfBytes,         //一次I/O操作所传送的字节数
    PULONG_PTR   lpCompletionKey,      //当文件I/O操作完成后,用于存放与之关联的callback
    LPOVERLAPPED   *lpOverlapped,      //IOCP特定的结构体,用户对象指针
    DWORD   dwMilliseconds);           //调用者的等待时间

//用于IOCP的特定函数
typedef struct _OVERLAPPEDPLUS{
    OVERLAPPED ol;      //一个固定的用于处理网络消息事件返回值的结构体变量
    SOCKET s, sclient;  
    int OpCode;  //用来区分本次消息的操作类型(在完成端口的操作里面,是以消息通知系统,读数据/写数据,都是要发这样的消息结构体过去的)
    WSABUF wbuf;     //读写缓冲区结构体变量 
    DWORD dwBytes, dwFlags; //一些在读写时用到的标志性变量 
}OVERLAPPEDPLUS;
//功能:投递一个队列完成状态
BOOL PostQueuedCompletionStatus( 
  HANDLE CompletlonPort, //指定想向其发送一个完成数据包的完成端口对象
  DW0RD dwNumberOfBytesTrlansferred, //指定—个值,直接传递给GetQueuedCompletionStatus 函数中对应的参数 
  DWORD dwCompletlonKey, //指定—个值,直接传递给GetQueuedCompletionStatus函数中对应的参数
  LPOVERLAPPED lpoverlapped, ); //指定—个值,直接传递给GetQueuedCompletionStatus 函数中对应的参数
typedef struct _WSABUF {
    ULONG len;     /* the length of the buffer */
    _Field_size_bytes_(len) CHAR FAR *buf; /* the pointer to the buffer */
} WSABUF, FAR * LPWSABUF;
  • len : 长度
  • buf : buf指针

1.2. WSARecv

#if INCL_WINSOCK_API_PROTOTYPES
WINSOCK_API_LINKAGE
int
WSAAPI
WSARecv(
    _In_ SOCKET s,
    _In_reads_(dwBufferCount) __out_data_source(NETWORK) LPWSABUF lpBuffers,
    _In_ DWORD dwBufferCount,
    _Out_opt_ LPDWORD lpNumberOfBytesRecvd,
    _Inout_ LPDWORD lpFlags,
    _Inout_opt_ LPWSAOVERLAPPED lpOverlapped,
    _In_opt_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
    );
#endif /* INCL_WINSOCK_API_PROTOTYPES */
  • s [in] : socket描述符
  • lpBuffers [in] : 一个指向 WSABUF 结构数组的指针。
  • dwBufferCount : lpBuffers 数组中 WSABUF 结构的大小。
  • lpNumberOfBytesRecvd [out] : 如果发送操作立即完成,则为一个指向所发送数据字节数的指针。
  • dwFlags [in] : 标志位。
  • lpOverlapped [in] : 指向WSAOVERLAPPED结构的指针(对于非重叠套接口则忽略)。
  • lpCompletionRoutine [in] : 一个指向发送操作完成后调用的完成例程的指针。(对于非重叠套接口则忽略)。
WSASocket()函数 和 Socket()函数 创建一个与指定传送服务提供者捆绑的套接口,可选地创建和/或加入一个套接口组。 此函数为socket()的扩展版本,其功能都是创建一个原始套接字。使用时需要包含 winsock2.h 头文件和链接ws2_32.lib库。 定义 SOCKET WSASocket (   int af,   int type,   int protocol,   LPWSAPROTOCOL_INFO lpProtocolInfo,   GROUP g,   DWORD dwFlags   ); 参数说明: af:[in]一个地 阅读详情

相关推荐

通达信K线主图指标公式实战:如何用颜色标记快速识别涨停与炸板信号

本文详细介绍了如何利用通达信K线主图指标公式,通过颜色标记快速识别涨停与炸板等关键信号。通过实战拆解公式源码,手把手教您构建直观的“视觉交易系统”,将复杂的K线形态转化为醒目的颜色信号,帮助投资者高效聚焦机会与风险,提升技术分析效率。

weixin_29302047的博客 1769

Windows网络编程中Socket与WSASocket区别

这2个函数的主要功能都是创建一个SOCKET,函数定义分别如下: SOCKET WSAAPI socket( _In_ int af, _In_ int type, _In_ int protocol ); SOCKET WSASocket( _In_ int af, _In_ int type, _In_ int protocol, _In_ LPWSAPROTOCOL_INFO lpP

m0_54852350的博客 1178

STM32 RC522串口驱动程序 (简单直接)

rc522作为使用非常多的读写卡芯片,使用SPI芯片读写应用已经非常广了。但有些时候我们只有串口可以使用,或者我们觉得串口使用更加方便,那么就必须要编写串口的驱动程序。不过很难找到可以直接使用的串口程序。所以在此将我这边写好的串口驱动写好如下: 直接上代码 下面是RC522.C的驱动文件。支持读写卡号8位数据。rc522用的是stm32 的串口3,调试显示是串口1; #include "rc522.h" #include "delay.h" /////////////////////////////////

qq_42074368的博客 9001

windows网络编程,TCP/IP协议,UDP/IP协议

适用人群windows网络编程的初学者课程概述课程简介:这部教程是windows网络编程,包括两部分:tcp/ip协议编程与udp/ip协议编程课程内容:c/s模型的编码,5种windows网络模型:select,异步选择,事件选择,重叠io,完成端口,以及基础理论知识的讲解。课程代码会带大家一行一行书写,让大家都能够学会。课程适合人群:网络编程爱好者,网络编程初学者tcp/ip协议课程章节:第一章 c/s模型的讲解以及代码实现第二章 select模型的讲解以及代码实现第三章 异步选择模型的讲解以及代码实现第四章 事件选择模型的讲解以及代码实现第五章 重叠i/o模型的讲解以及代码实现第六章 完成端口模型的讲解以及代码实现第七章 tcp/ip基础知识的讲解,包括网络分层,三次握手,四次挥手,协议头等等。udp/ip协议课程章节:第一章 c/s模型的讲解以及代码实现第二章 select模型的讲解以及代码实现第三章 异步选择模型的讲解以及代码实现第四章 事件选择模型的讲解以及代码实现第五章 重叠i/o模型的讲解以及代码实现第六章 完成端口模型的讲解以及代码实现

【深度学习】tensorboard中的图片放到论文中

1. 利用tensorboard中的导出数据功能 选中左上角的标签,然后选择csv格式的数据下载即可。 左边的smoothing 数值不影响导出数据的大小。 2.tensorboard 图下标签介绍: 放大 Toggle y-axis log scale:将y轴对数化 Fit domain to data:如果拖动了图片等,再重新回到原始位置 Download Current Chart as SVG 3.用下载下来的csv数据来画图 第一幅图片:训练的平均长度 fig, ax1 = plt.sub

gaocui883的博客 1万+

无人机信号干扰系统设计方案

设计定向阻塞干扰器需要结合射频(RF)技术、功率放大技术和定向天线技术,核心目标是向特定方向发射高功率噪声信号,覆盖目标频段,阻断无人机的通信或导航信号。实际设计中需平衡功率、效率、散热和便携性,同时需考虑抗干扰技术的快速演进(如无人机加密通信和AI避障)。在合法框架下,此类设备可有效应对“黑飞”威胁,但技术滥用风险需严格管控。定向阻塞干扰器的硬件设计核心在于。

wanghao312的博客 3060

java socket 阻塞模式_(四) 如何将socket设置为非阻塞模式

1. windows平台上无论利用socket()函数还是WSASocket()函数创建的socket都是阻塞模式的:SOCKET WSAAPI socket( _In_ int af, _In_ int type, _In_ int protocol ); SOCKET WSASocket( _In_ int af, ...

weixin_39633090的博客 1129

ANSYS 有限元分析 支架拓扑优化设计 分析过程及常见问题解决

1.确定分析类型,所用模块包括两种 static structural Topology Optimization。3.通过草图建立几何模型,建好的几何模型如图1所示。2.工程材料采用默认的Q235。

m0_68737530的博客 1968

WSASocket()的问题收集

 问题1:WSASocket()和socket()函数两者有什么区别呀?我在学windows网络编程时,看见有两个函数都是创建一个SOCKET,这两个函数创建出来的socket有什么区别呀?他们只是获取的参数信息不同而已吗,是不是用在不同的地方?SOCKET WSASocket(int af, int type, int protocol,                 LPWSAP

要饭's Blog 4097

机器人动力学仿真软件:V-REP (CoppeliaSim)_(15).仿真项目案例分析

通过以上几个具体的仿真项目案例,我们展示了如何在V-REP (CoppeliaSim)中进行二次开发,实现复杂的机器人动力学仿真任务。这些案例涵盖了六轴机械臂的运动学仿真、移动机器人的路径规划和避障、以及无人机的飞行控制和环境感知。每个项目都通过编写Lua脚本实现了对机器人模型的控制和任务执行,并通过仿真结果分析验证了算法的有效性和系统性能。希望这些案例能够为读者在实际项目中使用V-REP (CoppeliaSim)提供有益的参考和启发。

kkchenjj的博客 1295

《Python星球日记》 第43天:机器学习概述与Scikit-learn入门

《Python星球日记》 第43天:机器学习概述与Scikit-learn入门

Code_流苏:在代码中寻诗意,在实践中觅真知 933

WSASocket与socket

WSASocket是Windows专用,支持异步操作;socket是unix标准,只能同步操作。 Socket可采用多线程实现非阻塞 *******原文:http://hi.baidu.com/%B9%A6%BB%D4cgh/blog/item/c610f713abbb0609b9127b99.html******/ winsock是socket的windows平台的实现。w...

weixin_30443731的博客 319

Apollo 9.0 参考线生成器 -- ReferenceLineProvider

在基于参考线的规划算法中,参考线是Planning一切工作的基础和前提,所以搞清楚参考线怎么来的就变得很重要。为此,首先需要了解Planning 与 Routing的交互,通过交互得到路径片段,这些路径片段就告诉我们该怎么走,再在此基础上生成参考线,最后使用不同的平滑算法对参考线进行平滑,得到一条光滑的参考线。

WaiNgai 1665

WSASocket()

 WSASocket()  简述:创建一个与指定传送服务提供者捆绑的套接口,可选地创建和/或加入一个套接口组。  #include   SOCKET WSAAPI WSASocket ( int af, int type, int  protocol, LPPROTOCOL_INFO lpProtocolInfo, Group g,  int iFlags);  af:

wiSCADA 1352

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

WSASocket()与Socket()的区别

/**************************************************** WSASocket是Windows专用,支持异步操作; socket是unix标准,只能同步操作。 Socket可采用多线程实现非阻塞 *******原文:http://hi.baidu.com/%B9%A6%BB%D4cgh/blog/item/c610f713abbb

smb1987cs的专栏 3647

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Socket与WSASocket的区别

socket()   创建一个通讯端点并返回一个套接口。但是在socket库中例程在应用于阻塞套接口时会阻塞。      WSASocket()的发送操作和接收操作都可以被重叠使用。接收函数可以被多次调用,发出接      收缓冲区,准备接收到来的数据。发送函数也可以被多次调用,组成一个发送缓冲区队列。      可是socket()却只能发过之后等待回消息才可做下一步操作!   He

leolewin的博客 802

Socket()与WSASocket()的区别

  socket()   创建一个通讯端点并返回一个套接口。但是在socket库中例程在应用于阻塞套接口时会阻塞。     WSASocket()的发送操作和接收操作都可以被重叠使用。接收函数可以被多次调用,发出接     收缓冲区,准备接收到来的数据。发送函数也可以被多次调用,组成一个发送缓冲区队列。     可是socket()却只能发过之后等待回消息才可做下一步操作!   Heade

buffoon1的专栏 3061

WSASocket()和socket()两个函数的区别

1. http://hi.baidu.com/hxshellcode/item/21d36ff123a8b72e753c4caf 摘要: WSASocket是Windows专用,支持异步操作; socket是unix标准,只能同步操作。 Socket可采用多线程实现非阻塞 。 #具体看链接。 2. http://blog.163.com/zb_wenwu

Sunshine 1402

WSASocket错误码10013

今天在笔记本上调试socket程序,发现WSASocket失败,错误码是10013,但是在台式机上可以的,经过上网查找好像是管理员权限的问题。项目右键-属性-链接器-清单文件-uac执行级别选择requireAdministrator,重新编译运行果然正确了,先记录下来。

jjdujiang的专栏 3419

WSASocket函数

函数功能:创建套接字函数原型SOCKET WSASocket(  __in  int af, //v4下用AF_INET,v6下用AF_INET6  __in  int type,//TCP协议用SOCK_STREAM;UDP协议用SOCK_DGRAM;原始套接字用SOCK_RAW,可以手动构造IP报头  __in  int protocol,//指定协议如IPPROTO_ICMP,IPPROTO_TCP ,IPPROTO_UDP ,IPPROTO_ICMPV6 ;0代表不指定协议  __in  LPWSA

IPJMC的专栏 2102
上一篇: libuv10_源码分析
下一篇: 0_TCP概念缩写
knowledgebao
博客等级 码龄15年 401粉丝 198原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值