gpt4 book ai didi

sockets - 如何在WinSock的UDP中将消息从服​​务器发送到客户端?

转载 作者:行者123 更新时间:2023-12-03 12:01:27 24 4
gpt4 key购买 nike

我正在学习WinSock UDP。我看过的大多数教程都要求我:

在服务器端:

SOCKET socked = socket(PF_INET, SOCK_DGRAM, 0)
bind(...);
for(;;) { recvfrom(..); }

在客户端:
SOCKET socked = socket(PF_INET, SOCK_DGRAM, 0);
sendto(...);

但是我不知道该怎么做,将数据从服务器发送到客户端。我不知道客户端的端口(我发现它的每个sendto调用都不同),我希望能够将客户端隐藏NAT连接到服务器,并且仍然从服务器接收数据。

在现代游戏中是如何做到的?

最佳答案

这里有两个问题。

寻找地址

函数recvfrom声明为:

int recvfrom(
__in SOCKET s,
__out char *buf,
__in int len,
__in int flags,
__out struct sockaddr *from, /* <--- */
__inout_opt int *fromlen /* <--- */
);

因此,您可以在 from中使用 fromlensendto
sendto(..., (SOCKADDR *)from, *fromlen);

NAT

NAT框应自动允许服务器“答复”客户端发送的数据报。因此,客户端发送数据报这一纯粹的事实导致NAT框短暂打开(几分钟?)打开端口以允许流量返回。

关于sockets - 如何在WinSock的UDP中将消息从服​​务器发送到客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8310648/

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