学习P2P第二天的小问题

为了能够将IP地址地址和端口号显示在界面上:需要调用Qt类来获取本地IP地址。在我看的某大神的源码中(会分享),他在这里用了QList容器来存储IP地址,一般来说QVector是我们使用的首选,因为QVector是将它的项目存储在内存中,QList则是将项目直接存在堆上,这里为什么会这样子写,或者说这样用有什么实际意义,还有待理解!

同时这里用了QHostAddress类来定义QList模板,QHostAddress类是用来对本地地址操作的方法,但是它不是DNS搜索。QNetworkInterface能够搜索到包括0在内的本机所有地址。

然后用了一个foreach语句来查找list中满足IPv4协议的本地地址同时返回该值,foreach语句好像是java或者PHP中的语句,没学过也不清楚,但是很像C++中的范围for语句。没有多大区别,应该都可以用。学习P2P第二天的小问题_第1张图片

2.第二个问题是:在源代码中设置了许多按键槽函数,但是总是找不到与按键连接connect,还特意去问了博主,后来在百度搜索发现了另一篇文章http://blog.csdn.net/fjb2080/article/details/6558589,这里面讲了Qt的自动连接机制,应该是只要按照一定的命名规则对槽函数进行命名就可以实现连接,不必使用connect,酱紫我觉得可以简化代码。下面看一下例子:

学习P2P第二天的小问题_第2张图片

3.下面还是对监听函数listening分析一下:

学习P2P第二天的小问题_第3张图片

首先前面对三个初始化还不是很理解,用listen监听函数判断是否监听成功,如果成功则改变状态栏显示。QHostAddress::LocalHost相当于127.0.0.1,属于本机地址。它和联网之后的IP地址是有区别的,百度上用了一个很形象的比喻:假如你本人是电脑,你叫小明,那么127.0.0.1就相当于“自己”,网络Ip相当于“小明”。 

4.QTcpServer 在服务器端的应用是作为监听套接字使用,QTcpSocket在服务器端才是用来与客户端通信的。

你可能感兴趣的:(学习P2P第二天的小问题)