gpt4 book ai didi

sockets - 在winsock中检索套接字的协议(protocol)

转载 作者:行者123 更新时间:2023-12-03 12:06:43 26 4
gpt4 key购买 nike

我正在从事网络可靠性模拟工作,我需要根据服务质量百分比来模拟丢包。目前我有一个链接到 send 的 DLL , sendto , recvrecvfrom .然后我的钩子(Hook)会根据服务质量“丢弃”数据包。

我只需要将钩子(Hook)应用于 UDP 数据包,而不干扰 TCP(TCP 用于远程调试)。

有没有一种方法可以查询 WinSock 以获取套接字绑定(bind)的协议(protocol)?

int WSAAPI HookedSend(SOCKET s, const char FAR * buf, int len, int flags)
{
//if(s is UDP)
//Drop according to QOS

else
//Send TCP packets undisturbed
return send(s, buf, len, flags);
}

最佳答案

我认为您可以使用 getsockopt 获得套接字类型:

int optVal;
int optLen = sizeof(int);

getsockopt(socket,
SOL_SOCKET,
SO_TYPE,
(char*)&optVal,
&optLen);

if(optVal = SOCK_STREAM)
printf("This is a TCP socket.\n");
else if(optVal = SOCK_DGRAM)
printf("This is a UTP socket.\n");
else
printf("Error");

关于sockets - 在winsock中检索套接字的协议(protocol),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4894291/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com