天天看点

MATLAB实现简单的聊天软件

利用MATLAB实现两个主机的通信(利用UDP协议)

闲来无事,做的一个小玩意儿,和大家分享一下

1. 首先看一下界面效果吧,非常简单,如下所示:

主机一:

MATLAB实现简单的聊天软件

主机二:

MATLAB实现简单的聊天软件

2. 如果有人感兴趣的话,这里有下载地址,提供给大家:

链接:https://pan.baidu.com/s/1zXTLdailS_l42CvLnOKYOA

提取码:0mf0

3. 打开压缩包

可以看到五个文件,就不详细讲他们的用途了,命名算是比较清晰了。

4. 简单配置1

使用之前,打开udp_interface.m文件,找到第77行,修改其中的IP地址为你需要通信的IP地址(如果是单主机模拟,就是自己的IP,如果是双主机通信,就是对方主机的IP地址)。

MATLAB实现简单的聊天软件

5.简单配置2

仍旧在77行,修改其中的端口号,第一个主机远程端口号设置为8822,本地端口号设置为8833,第二个主机相反即可(注意:端口号在1-65535之间随意取值,但是有些是特殊应用端口,最好不要乱取),如下所示:

主机一:

MATLAB实现简单的聊天软件

主机二:

MATLAB实现简单的聊天软件

6. 这样就完成了配置过程,然后点击运行,就可以体验效果了,祝大家好运!

注意: 最近有同学反映不能进行两个远程主机之间的通信,我和这位同学一起想了很久,才明白其中的问题。这里来解释一下,希望大家不要在此问题上浪费时间。(后面有解决方案)

解释内容: 1、理论上来讲,我们每次连接互联网,会得到一个全网唯一的IPv4地址(公网),这样就可以唯一寻址。

2、但是实际上由于IPv4地址过少(实际上已经枯竭了,无IP可分),只有某些机构拥有IPv4公网地址。

3、因此我们的IP(私网IP)都是通过 NAT 协议转换来的,公网IP的多个端口对应于我们一台联网主机 (因为一个IP的端口有65535个,而我们经常使用的端口没有那么多,他可以用 一个公网IP映射出很多个私网IP ,比如他给每个局域网IP分配2048个端口,那么就可以承载65535/2048=31个私网IP,大概是这个意思,具体的大家自己去了解一下吧)。

4、我们在电脑上查到的IP如图所示:

MATLAB实现简单的聊天软件

实际上这是内网IP,是经过NAT映射之后的,所以根据这个IP不能进行远程通信。

5、我们的公网IP地址在浏览器输入“IP”可以查到,如下图所示:

MATLAB实现简单的聊天软件

但是实际上我们根据这个IP仍旧不能进行通信,因为我们不知道自己的端口号是怎么在运营商那里分配的(这个分配也存在一定的动态性)。

6、当然,好像网络上有很多NAT穿透的方法,可以实现自己的端口与公网一一映射,理论上这样就可以进行通信了。

7、实际上也没有那么悲观,特殊情况下的远程通信还是可以实现的,如果我们的多台主机在 同一个局域网 (私网)内部,就可以根据上面查询到的私网IP进行通信(比如在 同一学校的校园网 内,或者直接把两台主机连接到一个路由器上,组成局域网就可以,这个我是试过的),可以试着玩玩儿(如果有钱的话,可以向运营商买一个公网IP,好像2000块,就能自己建立服务器,当作中继站进行通信了)

最近做了Matlab的UDP公网单向通信,可以看下:公网UDP通信

继续阅读