就是怎么知道是那个IP发来的数据包
我的udp方式不是用的recvfrom ,而是GetQueuedCompletionStatus之后,调用的readfile,怎么弄?
通过GetQueuedCompletionStatus的这个lLPDWORD lpCompletionKey参数,能不能获得?
我的udp方式不是用的recvfrom ,而是GetQueuedCompletionStatus之后,调用的readfile,怎么弄?
通过GetQueuedCompletionStatus的这个lLPDWORD lpCompletionKey参数,能不能获得?
解决方案 »
- xp vc2010 ATL项目【aa】 动态链接库 添加ATL简单对象【bb】 添加方法【cc】:注册表【HKEY_CLASSES_ROOT】中没有aa.bb
- 路由器是不是相当于一个NAT设备?
- 如何在按了工具条上的按钮后,改变鼠标的形状?
- xp下,关于任务栏,修改注册表需要, 重启的问题。
- access编的数据表里有ole对象格式的,在vc中找不到对应的变量支持
- VC6.0问题,为什么debug时候.cpp文件出现行不对的问题?
- access violation
- 高分请教,关于MFCGridCtrl
- 散分
- 请教:怎样得到控件里的值?将其存入CStringArray里。
- 我实在没办法~~
- 修改调试版本?????????
使用
int WSARecvFrom(
SOCKET s,
LPWSABUF lpBuffers,
DWORD dwBufferCount,
LPDWORD lpNumberOfBytesRecvd,
LPDWORD lpFlags,
struct sockaddr* lpFrom,
LPINT lpFromlen,
LPWSAOVERLAPPED lpOverlapped,
LPWSAOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine
);
struct sockaddr* lpFrom,这个参数就是。把这个参数加入到LPWSAOVERLAPPED 结构里,在GetQueuedCompletionStatus返回后可以取到。
不要用ReadFile。
ReadFile是Winsock2还没出来的时候的MS折衷办法,效率不高,经常要在USER MODE和KERNEL MODE里切换。
而WSARecv WSARecvFrom WSASend WSASentTo这些都是专门优化过的,只要你的系统支持WINSOCK2
就改用这个