urenai 发表于 2022-7-16 12:36:05

@吴老板 刚更新的数据报存在不合理。

本帖最后由 urenai 于 2022-7-16 12:37 编辑

及时更新止损,避免已被应用。

定义事件:数据到达 不应只有1个参数,应当在给一个对方信息参数,用于UDP数据报打洞。

现在接收事件无法获取对方wai网+port,

发送数据 的 前2个参数,现在基本无用。


urenai 发表于 2022-7-16 12:39:07

本帖最后由 urenai 于 2022-7-16 12:45 编辑

还是希望更新一下,给接收事件,添加对方IP+PORT

void CUDPSocketObject::OnFilterMessage (UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    if (m_pSocketInterface == NULL)
      return;

    if (uMsg == _VSM_DATA_INCOMING && m_hSock != INVALID_SOCKET)
    {
      INT nSize;
      if (ioctlsocket (m_hSock, FIONREAD, (u_long*)&nSize) == 0)
      {
            nSize = MAX (1, nSize);

            CVolMem mem;
            BYTE* p = mem.Alloc (nSize);

            nSize = recvfrom (m_hSock, (char*)p, nSize, 0, NULL, NULL);
            if (nSize != SOCKET_ERROR && nSize > 0)
            {
                mem.Realloc (nSize);
                m_pSocketInterface->OnRecvPeerData (mem);
            }
      }
    }
}
应该是这一段。在 m_pSocketInterface->OnRecvPeerData (,,mem);

urenai 发表于 2022-7-16 12:56:24

    调用格式: 〈字节集〉 对象.接收 (整数型 等待时间,对方信息变量 对方信息,[逻辑型变量 是否成功]) - 网络通讯支持库->网络数据报
    英文名称:recvfrom_udp
    接收来自网络数据报的数据,每次接受的最大长度为20480个字节。如果出错,将向第三个参数写入假,并返回空字节集。本命令为初级对象成员命令。
    参数<1>的名称为“等待时间”,类型为“整数型(int)”。等待连接的时间范围 0 无限等待,-1 不等待 其它 具体等待时间(毫秒)。
    参数<2>的名称为“对方信息”,类型为“对方信息(halve_info)”,提供参数数据时只能提供变量。获得对方的IP及端口信息。
    参数<3>的名称为“是否成功”,类型为“逻辑型(bool)”,可以被省略,提供参数数据时只能提供变量。如果提供本参数,在接收数据成功的情况下,其值将被改写为真;在接收数据失败的情况下,其值将被改写为假。

飞扬工作室 发表于 2022-7-16 15:25:11

你说得很有道理,已经更新,你自己可以搜寻更新一下下面三个文件:




页: [1]
查看完整版本: @吴老板 刚更新的数据报存在不合理。