最近调UDP两台PC(win 与linux)通信调了很久,之前主要的VMvare 装的linux系统与win10的通信没有问题,但是linux与别的通信就不行,调试了很久,防火墙什么的都关了也是无济于事,具体表现为发送可以发送成功,但是接收不到,后来用来nc的命令进行UDP调试,才发现本身就是虚拟机的问题,表现为虚拟机可以和本机nc通,但是虚拟机不能与外界其他电脑nc通,于是更换了另外一台Linux主机,换好端口和网址就可以了,代码其实还是之前的代码,并没有怎么改。
nc命令如下:
接收端在终端中输入

nc -l -p port  //port为端口号,port 为可用UDP端口

发送端在终端输入:

nc ip port  //ip为ip地址,port 为可用UDP端口

如果两端发送接收,说明ip与端口是可以联上的,也是可以建立UDP通信的,但是感觉UDP选端口是个很费劲的活,这里选的端口是可以连上的,但是不代表你选的端口也可以被bind() 上,如果bind一直报错,那么在其他位置(其他位置都是死码)没有错的情况下,就要开始考虑更换其他端口了,关于bind函数一直绑定不上,其实我还想到了一个暴力的方式,那就是用一个循环,直到找到可以绑定的上的端口为止。
下面再说一下经常用的命令行吧,以便之后好查看:
win查找ip

ipconfig

mac 与linux查找ip

ifconfig

win查找端口

netstat -ano

mac ,linux查找端口

netstat -tunlp | grep 端口号

而且感觉选择在ip后的端口好些,如:
在这里插入图片描述

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐