c++ - UDP recvfrom()导致问题

标签 c++ visual-studio networking udp

我一直在尝试从客户端接收数据包,但是在recvfrom()过程中,我认为即时通讯做错了...

我有一个名为DataPacket的东西,它只是一个带有一些x和y值的类

客户端执行以下操作...

int UDPCon::Send(DataPacket dPacket)
{
    int n = sendto(m_Socket,  (char *)&dPacket, PACKETSIZE, 0, (struct sockaddr *)&m_RemoteAddress, m_SocketAddressSize);   
    return n;   
}

服务器收到
int CUDPSocket::Receive(DataPacket *data)
{
    int n = recvfrom(m_Socket, (char *) &data, PACKETSIZE, 0, (struct sockaddr *)&m_RemoteAddress, &m_SocketAddressSize);
    return n;
}

当我只是简单地发送char而不进行强制转换时,这种方法就可以正常工作,因此代码可以正常工作。我认为我对指针做错了,一旦recvfrom()将数据放入“数据”中,DataPacket“数据”就变成“无法评估表达式”

我真的很感谢任何帮助

谢谢

最佳答案

似乎您正在发送结构,或者至少是DataPacket中的原始数据。在这种情况下,请将服务器代码更改为

int CUDPSocket::Receive(DataPacket *data)
{
    int n = recvfrom(m_Socket, (char *) data, PACKETSIZE, 0, (struct sockaddr *)&m_RemoteAddress, &m_SocketAddressSize);
    return n;
}

但是,您应该显示DataPacket和PACKETSIZE的声明,上面的内容可能会或可能不会执行您需要做的事情。

关于c++ - UDP recvfrom()导致问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8086530/

相关文章:

android - 哪些移动网络类型允许通话期间的 http 流量?

C++ vector 插入和读取

c++ - 在 C++ 中引用 stack<int>.top() 的返回值的正确行为是什么

c++ - 使用 g++ 和 CMake 损坏的配置文件信息

c# - VisualStudio建议在重要的地方删除this-Keyword?

c++ - ethtool 获取永久 MAC 地址返回全 0

c++ - 避免静态和动态类型转换

c# - 使用 cmd shell 合并目录的内容

c++ - Visual Studio C/C++ 如何与远程设备一起工作?

networking - 什么是具有统计显着性的延迟变化?