9.什么是send或者WSASend?
2017-01-23 08:36
901 查看
各位亲爱的朋友: 我们又在VIP辅助基础课程相会了,那么,这节课,我将与你分享什么是send或者WSASend? TCP协议使用的send、recv、WSASend和WSARecv, UDP协议使用的sendto、recvfrom、WSASendTo 和WSARecvFrom。 TCP(Transmission Control Protocol,传输控制协议)是基于连接的协议,也就是说,在正式收发数据前,必须和对方建立可靠的连接。 UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是面向非连接的协议,它不与对方建立连接,而是直接就把数据包发送过去! 什么是send? 中文翻译就是发送, 具体作用:用于向一个已经连接的socket发送数据,如果无错误,返回值为所发送数据的总数,否则返回SOCKET_ERROR。 Socket是什么? 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。 Send是API函数 什么是API函数? API的英文全称(Application Programming Interface)应用程序编程接口。微软提供 不同API函数功能不一样。 MSDN send int send( _In_ SOCKET s, //一个用于标识已连接套接口的描述字。 _In_ const char *buf, //包含待发送数据的缓冲区。封包数据内存地址 _In_ int len, //缓冲区中数据的长度。封包数据大小 _In_ int flags //调用执行方式。 ); 有发送send那就有接收recv (中文“接受”的缩写:receive) int recv( _In_ SOCKET s, _Out_ char *buf, //封包数据地址 服务器发给客户端的数据。 _In_ int len, _In_ int flags ); 什么是WSASend? 作用:在一个已连接的套接口上发送数据。 int WSASend( _In_ SOCKET s, //标识一个已连接套接口的描述字 _In_ LPWSABUF lpBuffers,//一个指向WSABUF结构数组的指针。每个WSABUF结构包含缓冲区的指针和缓冲区的大小。 //00401000 _In_ DWORD dwBufferCount,//lpBuffers数组中WSABUF结构的数目。 _Out_ LPDWORD lpNumberOfBytesSent,//如果发送操作立即完成,则为一个指向所发送数据字节数的指针。 _In_ DWORD dwFlags, //标志位。 _In_ LPWSAOVERLAPPED lpOverlapped,//指向WSAOVERLAPPED结构的指针(对于非重叠套接口则忽略)。 _In_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine //一个指向发送操作完成后调用的完成例程的指针。(对于非重叠套接口则忽略)。 ); typedef struct __WSABUF { u_long len; //封包数据大小 char FAR *buf; //封包数据内存地址 } WSABUF, *LPWSABUF; 00401000 10封包数据大小 00401004 00501000封包数据内存地址 有发送WSASend那就有接收WSARecv int WSARecv( _In_ SOCKET s, _Inout_ LPWSABUF lpBuffers, _In_ DWORD dwBufferCount, _Out_ LPDWORD lpNumberOfBytesRecvd, _Inout_ LPDWORD lpFlags, _In_ LPWSAOVERLAPPED lpOverlapped, _In_ LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine ); 功能CALL实现的整个流程: 游戏里操作功能后---游戏向服务器发送封包数据---服务器接受到数据---根据数据解析后向游戏客户端发送数据---游戏客户端接受数据后执行相关功能。 怎么找游戏里功能CALL? 根据上面流程: 未知功能CALL1() { 未知功能CALL2() { 未知功能CALL3() { 打坐功能CALL4() * { 未知功能CALL5() { Send功能CALL6()---向服务器发送封包数据 } } } } } 所以可以下bp send或者bp WSASend 或bp sendto或者bp WSASendto来实现找功能CALL。 win7以上系统有时候要下 bp ws2_32.send 才能下对地方。 没有向游戏服务器发包的功能怎么办?
相关文章推荐
- intent.ACTION_SEND 发送邮件或者任何内容到邮件客户端或者qq 微信什么的
- 初入职场的新人,什么行为或者话会让老员工反感?
- 最近在学习测试的东西,有什么好的书籍或者网站吗?
- 在javascript或者jQuery中绑定按钮点击事件,和在HTML 标签中直接调用onclick属性有什么区别?
- Android中什么是ANR,如何应对或者如何避免它
- linux网络编程 send或者write socket遭遇SIGPIPE,分析及解决
- 什么是java序列化,如何实现java序列化?或者请解释Serializable接口的作用
- “static”关键字是什么意思?Java中是否可以覆盖(override)一个private 或者是static的方法?
- 输出和输入中%*c或者%*s有什么作用
- Ubuntu Linux, 不要弄什么 wine,龙井 或者什么等 QQ 了。
- 在文本框输入数据后,因为有历史记录,鼠标点或者敲回车这个历史记录时,请问会触发什么JS事件
- 正则表达式最后加一个/g或者/ig代表什么意思
- maven是怎么(或者说什么时候)把工程的jar包,下载到本地maven仓库所在位置的?
- 大学刚毕业找什么类型的公司好?成熟的大公司或者创业型的公司 推荐
- Opencv T-API 或者 TAPI是什么
- asterisk 中上传录音,拨打时没声音或者完全听不清说什么。?
- HTTP服务器用什么组件或者方式比较好
- java的类中,直接写 {}或者static{},什么意思
- ERP的零库存是什么意思,或者说是否会带来零库存?