udp-QT中 UDP 怎么绑定发送端口

问题描述

QT中 UDP 怎么绑定发送端口

int Sender::Send(QString ipaddr,quint16 port)
{
QHostAddress serverAddress = QHostAddress(ipaddr);

return udpSocket->writeDatagram(TX_data.data(), TX_data.size(),serverAddress, port);
}

发送函数可以发送数据到指定的对方的地址和端口,但是发送所使用的端口是系统随机分配的,请问怎样固定发送端口,比如指定7777作为发送端口?

解决方案

receiver = new QUdpSocket(this);

receiver->bind(45454,QUdpSocket::ShareAddress);

解决方案二:

s = socket(AF_INET, SOCK_STREAM, 0);
/* ... */

memset(&client_addr, 0, sizeof(client_addr));
client_addr.sin_family = AF_INET;
client_addr.sin_port = htons(22222);

if (bind(s, (struct sockaddr *) &client_addr, sizeof(client_addr)) < 0) {
    perror("bind");
    exit(1);
}

connect(s, (struct sockaddr *) &server_addr, sizeof(server_addr));

时间: 2024-08-04 14:14:16

udp-QT中 UDP 怎么绑定发送端口的相关文章

android中UDP编程的注意事项

一.有的手机不能直接接收UDP包,可能是手机厂商在定制Rom的时候把这个功能给关掉了. 1.可先在oncreate()方法里面实例化一个WifiManager.MulticastLock 对象lock:具体如下: WifiManager manager = (WifiManager) this .getSystemService(Context.WIFI_SERVICE); WifiManager.MulticastLock lock= manager.createMulticastLock("

udp获取发送端的发送端口

问题描述 udp获取发送端的发送端口 udp进行数据接收,怎样获取发送方的发送端口,用GetPeerName()函数不行啊!谢谢大家!

LinuxC下获取UDP包中的路由目的IP地址和头标识目的地址

在接受到UDP包后,有时候我们需要根据所接收到得UDP包,获取它的路由目的IP地址和头标识目的地址. (一)主要的步骤: 在setsockopt中设置IP_PKTINFO,然后通过recvmsg来获取struct in_pktinfo(struct in_pktinfo是struct msghdr中msg_control的成员).in_pktinfo 结构体(如下所示),我们可以从in_pktinfo中获取路由目的地址(destination address of the packet).头标识

为什么在UDP包中不能获取发包方的地址

首先,我们要先了解一下UDP包的结构.                                   图1 UDP报文格式 从图1,我们可以看出,从UDP包中,我们可以获取的信息只有源端口和目的地端口.我们不能获取到源IP因为报文中没有源IP.真正包含IP地址的是IPV4伪报头中.                                    图2 UDP包的IPV4伪报头格式 可以看出,图1中的UDP包其实是包含在图2中的,图2中清楚地指出了包的源地址(source addres

udp通信 接收不到包-win7 下进行UDP通信测试发现UDP服务器无法接收到CLIENT的发送数据这是啥原因?

问题描述 win7 下进行UDP通信测试发现UDP服务器无法接收到CLIENT的发送数据这是啥原因? 进行UDP数据通信的时候,UDP的客户端用WIRESHARK抓包,能很明显的看到数据发出来了,数据格式也是正确的,但是服务那边的就是接受不到数据,接受卡在接受哪里不动了.查看防火墙,防火墙也是关了的:该程序在WINXP下通信都是正确的,哪位大侠能给下解决方案?总觉得是WIN7在哪里设置有问题:另外我查看QQ的设置,开放该应用程序的UDP协议为开放所有协议,还是不行. 解决方案 WIN7下UDP需

qt udp 多线程-Qt 基于UDP的多线程文件传输

问题描述 Qt 基于UDP的多线程文件传输 发送端5个线程发送数据,接收端主线程接收到数据放入循环队列,同时接收端一个子线程从队列中取出数据并写入文件,但总丢包,不知道问题出在哪? 解决方案 有代码吗?丢包的原因太多了

服务器-网络编程中并未建立连接的端口却能往套接字中写,发送数据,困惑

问题描述 网络编程中并未建立连接的端口却能往套接字中写,发送数据,困惑 拜托各位了,碰上一个难以理解的困惑 情况如下 我在qt中编写了一个客户端(抛开qt,也可以理解为别的写的),在这个应用程序中有一个对象是专门用来建立连接并且处理和服务器的相关的通信. 服务器的话是在linux下c写的,简单的可以看做这种模式accept等待连接,连接成功后阻塞读写 while(1) { clientfd = accept(lfd, null, null): printf("new connectn"

线程-android中UDP socket通信的问题

问题描述 android中UDP socket通信的问题 我使用两个线程,一个用来发送 数据,一个用来接收数据,先开启接收数据线程,接收到数据之后然后回应给对方,但是发送一直停在SocketAddess s=pacakge.getSocketAddess这一步,pacakge是接收到的包.接收线程是这样的:while(true){ socket.receive(packge);}接收到包之后我开启发送线程就卡在上面 那步了,是不是 socket在处于阻塞状态时不能发送数据包啊? 解决方案 默认是

向了解VLC开发的求教:如何修改VLC源码中UDP包长度?

问题描述 向了解VLC开发的求教:如何修改VLC源码中UDP包长度? 大家好 我在官网上下载了VLC的源代码,版本vlc-2.2.0.我现在在服务器端通过VLC向客户端发送本地视频文件并播放该视频,客户端接收数据并通过VLC播放视频,!他们之间通过UDP的方式传输,现在想要更改服务器端发出的UDP包的长度,使之变小,请问在VLC源代码哪里更改,看见源代码里边那么多的模块,看了两天实在找不到头绪,请高手指教,不胜感激! 解决方案 http://blog.csdn.net/lvmaker/artic