UDP readDatagram 获取发送方ip 地址

zz645327054 2012-05-25 07:48:50
QHostAddress *addr;
quint16 * port;
QString str;
char buffer[1024]="";
struct message *ptr;
udpSocket -> readDatagram(buffer,1024,addr,port); 每当程序运行到这里时 就出错关闭 这是为什么?
...全文
1088 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qixingl 2012-05-27
  • 打赏
  • 举报
回复
说错了,是1楼说的正确!
还有上面的,new出来的记得释放。
qixingl 2012-05-27
  • 打赏
  • 举报
回复
2楼说的正确。
addr, port需要是个有效地址,你在这里没有申请空间,是野指针。
你应该这样:
QHostAddress *addr = new QHostAddress;
quint16 * port = new quint16;
udpSocket -> readDatagram(buffer,1024,addr,port);
或不用指针
QHostAddress addr;
quint16 port;
udpSocket -> readDatagram(buffer,1024, &addr, &port);

一般来说,需要传指针过去的函数,都是要传有效地址,即已经申请内存后的指针,函数只是负责修改指针指向的值,不负责内存的申请和释放。

Joseph-Growth 2012-05-26
  • 打赏
  • 举报
回复
udpSocket -> readDatagram(buffer,1024,addr,port);好久没用过QT了。不过,我觉得,既然你是读取数据报的内容,总得告诉系统,你要读的是哪个地址,哪个端口的数据吧。你addr和port都是野指针的话,系统怎么知道如何读。获取发送方的IP,你需要从UDP数据报属性中去获取,或者,你传输的数据内容中包含该信息。通过解析数据报得知。
zz645327054 2012-05-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

udpSocket -> readDatagram(buffer,1024,addr,port);好久没用过QT了。不过,我觉得,既然你是读取数据报的内容,总得告诉系统,你要读的是哪个地址,哪个端口的数据吧。你addr和port都是野指针的话,系统怎么知道如何读。获取发送方的IP,你需要从UDP数据报属性中去获取,或者,你传输的数据内容中包含该信息。通过解析数据报得知。
[/Quote]

这个函数的意思 不是把发送方的地址和端口保存到addr 和 port的所指向的位置吗
那么还有其他获取发送方地址和端口的方法么

16,818

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧