一.运行疯狂聊天程序,利用wireshark抓包分析此程序连接采用的协议和端口
注意,当两台电脑连接到同一个WLAN时,运行疯狂聊天程序可能会无法发送聊天内容,当我们知晓ip时,在终端ping ip地址能够成功,但就是不能传输,此时需要将除WLAN外的网卡全部禁用,再次运行程序,就能够发送数据了。
打开wireshark,对WLAN进行抓包,这里利用的是两台电脑连接同一个WLAN,通过接收疯狂聊天程序的消息,得知两台电脑的ip地址,利用地址过滤,得到如下包:
可以看出,IPMsg程序使用的是UDP协议,在封包详细信息处打开User Datagram Protocol,可以看见封包的源端口和目的端口,在这里都是5002。
查看数据包:
这里显示的是“2222”
这就是聊天的内容。
尝试中文聊天:
捕获信息:
这里中文字符经过了转换。
通过字符转换工具可以得到:
和上述封包数据一致。 发现一个更方便的方法: 选择UDP流:
二.疯狂聊天程序的原理
关于UDP:将数据及源和目的封装成数据包中,不需要建立连接;每个数据报的大小在限制在64k内;因无连接,是不可靠协议;不需要建立连接,速度快。
使用udp协议主要涉及到两个类:DatagramSocket,DatagramPacket
- DatagramSocket: 用于建立一个数据包的出口或入口,构造方法中有IP的都是用于接收方的
- DatagramPacket: 用于包装数据,构造方法中有IP的都是用于发送方的
可以将其比作发送包裹,DatagramSocket就是快递公司,选择哪一个快递公司并不会影响包裹的发送;而DatagramPacket则是你的包裹,上面必须写明地址(IP)和门牌号(port:端口号). 当多台电脑运行疯狂聊天时,只需要将IP改为接收方的IP,端口号改为自己电脑上面空余的端口号(电脑的端口号是0–65535,1024以内是系统的,所以一般建议使用1024以外的端口号),并且在发送端,要在数据包对象中明确目的地IP及端口,在接收端,要指定监听的端口。 这里我们进入同一个房间(房间号相同)时,程序自动设置发送方和接收方是同一个端口号,当发送方发送数据时,接收方就能够很快接收到聊天内容。
三.参考链接
https://blog.csdn.net/qq_38238041/article/details/80268849 https://blog.csdn.net/qq_47281915/article/details/121356226
|