[Qt] QtcpSocket获取ip地址的小bug



昨天测试代码时发现了一个很奇怪的问题,在实验室时,我将服务器端运行在一台服务器上,用我和同学的电脑运行客户端完全正常。但当我晚上在宿舍测试代码时,一台电脑运行客户端和服务端,另一台运行客户端,却总是异常,同一份代码,为什么结果会不一样呢?

客户端是多对多的音视频通话,服务器端协助连接。宿舍的实验结果是两种情况①两台客户端只要连接就死了②一台客户端竟然收到自己发的音视频,而另一台客户端却总是显示音视频流被占用。特别是第二种现象很不符合常理!两台客户端是对等的,怎么实验现象会出现不一样呢?!

后来我通过查看流传输的sdp文件记录,发现其中一些ip地址竟然是127.0.0.1,更有一些出现::1这样的ip地址。经过回想,原来我在已作为服务端的那台机子上运行客户端时,为了省事,有时将ip设为127.0.0.1,有时就索性设为localhost.

当客户端要连接的主机为localhost时,服务器端获取的客户端Tcp链路指针中的地址字符串QTcpSocket *->peerAddress()竟然是"::1"。

而当主机为"127.0.0.1"时,服务器端获取的客户端Tcp链路指针的地址字符串QTcpSocket *->peerAddress()竟然也是"127.0.0.1",这两种情况根本就不是真实的ip地址。

附图:



时间: 2024-08-24 10:21:05

[Qt] QtcpSocket获取ip地址的小bug的相关文章

获取IP地址

获取本地计算机的IP地址 关键点 WSAStartup The Windows Sockets WSAStartup function initiates use of Ws2_32.dll by a process. int WSAStartup( WORDwVersionRequested, LPWSADATAlpWSAData ); 实现过程 #include <winsock2.h> #pragma comment(lib, "ws2_32.lib") char* 

ARM-Linux配置DHCP自动获取IP地址

备注:内核版本:2.6.30.9busybox版本:1.15.2 PC Linux和开发板Linux的工作用户:root 1. 配置内核:[*] Networking support --->Networking options ---><*> Packet socket<*> Unix domain sockets[*] TCP/IP networking[*] IP: kernel level autoconfiguration[*] IP: DHCP suppor

DHCP获取IP地址过程中捕获的报文—三级网络总结(二)

上一篇文章主要说了一下知识点中的IP地址的考点,这一篇我打算说说DHCP获取IP地址过程中捕获的报文的这个考点,都是自己的理解,有错误欢迎指正. DHCP是应用层协议,UDP是传输层协议,IP是网络层协议,以太网是链路层协议.数据在网络上传输的时候要自顶向下逐层封装的,典型的DHCP过程是这样的: 1:客户机向服务器发送DHCP_DISCOVER报文,申请IP. 2:服务器向客户机返会DHCP_OFFER报文,指定一个将要分配的IP. 3:客户机向服务器发送DHCP_REQUEST报文,请求这个

自动设置IP地址和自动获取IP地址bat批处理文件

自动设置IP地址.bat Echo offecho  手动设置IP地址....Netsh interface IP Set Addr "本地连接" Static 192.168.1.8 255.255.255.0 192.168.1.1 1echo  手动设置DNS地址....Netsh interface IP Set dns "本地连接" static 202.106.196.115 primaryecho  手动设置备份DNS地址....Netsh inter

CentOS 7如何设置Linux开机自动获取IP地址

centos7 minimal版默认安装好后没有获取ip地址,需要手动配置.方法如下: 1.输入“ip addr”并按回车键确定,发现无法获取IP(CentOS 7默认没有ifconfig命令),记录下网卡名称(本例中为ens33). 2.输入“cd /etc/sysconfig/network-scripts/”按回车键确定,继续输入“ls”按回车键查看文件. 3.输入“vi ifcfg-ens33”并按回车键确定(网卡名称可能不同).亦可在第二步直接输入“cd /etc/sysconfig/

电脑无法获取IP地址

电脑无法获取IP地址 朋友的家里有一个无线路由器,手机可以获取IP地址,但是电脑却一直获取不到IP,尝试的去重启网卡然后重启电脑,重启路由器恢复出厂设置重新配置但都无法解决. 最终的解决办法:netsh winsock reset 在系统中执行这个命令后重新启动电脑问题解决了! netsh winsock reset 作用是重置 Winsock 目录.如果一台机器上的Winsock协议配置有问题的话将会导致网络连接等问题,就需要用netsh winsock reset命令来重置Winsock目录

PHP获取IP地址及根据IP判断城市实现城市切换或跳转

PHP获取IP地址 这个比较简单了,利用PHP自带函数就可以了,PHP中文手册看一下,都有现成的例子,就不过多说明了,直接上代码,A段: ? <? //PHP获取当前用户IP地址方法 $xp_UserIp = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; $xp_UserIp = ($xp_UserIp) ? $xp_

虚拟机Redhat桥接无法获取IP地址

虚拟机Redhat桥接无法获取IP地址 先确认是否同时安装VirtualBox与VMware,本方案仅适用同装两款虚拟机出现的此种故障 报错代码: [[email protected] ~]# ifconfig eth0     Link encap:Ethernet  HWaddr00:0C:29:BD:65:C8 inet6 addr: fe80::20c:29ff:febd:65c8/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500

WPF 获取IP地址

List<string> ipList = new List<string>(); foreach (IPAddress _IPAddress in Dns.GetHostEntry(Dns.GetHostName()).AddressList) { if (_IPAddress.AddressFamily.ToString() == "InterNetwork") { ipList.Add(_IPAddress.ToString()); } } WPF 获取I