
QString MainWindow::getIP2() //获取ip地址{ QList<QHostAddress> list = QNetworkInterface::allAddresses(); foreach (QHostAddress address, list) { if(addressprotocol() == QAbstractSocket::IPv4Protocol) //我们使用IPv4地址 return addresstoString(); } return 0;}
getpeername()
这个系统的调用十分简单。它将告诉你是谁在连接的另一端:
#include<sys/socketh>
int getpeername(int sockfd,struct sockaddr addr,int addrlen);
第一个参数是连接的数据流套接口文件描述符。
第二个参数是指向包含另一端的信息的数据结构sockaddr的指针。
第三个参数可以设置为sizeof(structsockaddr)。
如果出错,系统调用将返回-1。
一旦你获得了它们的地址,你可以使用inet_ntoa()或者gethostbyaddr()来得到更多的信息。
[目录]
gethostname()
系统调用gethostname()比系统调用getpeername()还简单。它返回程序正在运行的计算机的名字。系统调用gethostbyname()可以使用这个名字来决定你的机器的IP地址。
下面是一个例子:
#include<unistdh>
int gethostname(charhostname,size_tsize);
如果成功,gethostname将返回0。如果失败,它将返回-1。
Trackback: >
通常内网地址DMZ区,通常无法直接访问。
需要中间有服务器中转。
如果能控制另一个网络路由器,可以做端口指向,这个有点麻烦。
就是你的IP是192168110,网关是19216811,另一个网络IP是192168210,网关是19216821
19216811和19216821可能是一个L2的不同网口,也可能是一个服务器的两个网卡。
情况不一样,做法不一样。
以上就是关于QT udp通信如何获取本机IP全部的内容,包括:QT udp通信如何获取本机IP、socket通信中 ,服务器如何获取连接的客户端的主机名。求函数代码、想要用socket连接一个另一个网络中的内网地址如何知道他的ip等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)