学完socket编成后,就迫不及待地写一个简单的聊天程序,好在同学面前装装逼,毕竟外行看热闹。然而在自己的电脑上运行是毫无差错,发送接收都没有问题,然而将客户端的exe文件打包后发送给其他电脑上运行时程序死在了connect函数上,始终无法连接到服务器,相信小白都有过这样的经历,为之气愤不已,我也很气愤。为什么连接不上呢?
电脑的网络是通过连在路由器上实现上网的,一个路由器的覆盖范围小,也就是说一个路由器就是一个局域网,连接在不同路由器上的电脑是无法用socket直接进行通信的,一些牛逼的大佬说用打洞的技术可以实现通信,毕竟人家是大佬,咱们也只能说声大佬牛逼之外还能说啥。废话不都说,到底怎样才能实现真正的聊天功能,我们需要连接到公网IP上就能实现通信。首先申请一个云服务器(先声明一下,不是打广告,不是打广告),阿里云或者腾讯云都可以,学生申请很便宜,一个月10块钱左右,申请到服务器后会给你一个公网IP和私有IP,使用这个公网IP。申请学生阿里云服务器请点击
当申请到这个服务器后该如何运行我们自己写的程序呢?这时就需要 xshell这个工具了,xshell可以远程操作服务器,也可以操作虚拟机中的linux系统,操作方法和在本机操作一样,都是用linux指令。怎么连就不说了,网上教程应有尽有。怎样才能将写好的程序上传到服务器运行呢,连接上与服务器后,输入 yum -y install lrzsz指令安装一个插件,安装完毕后,输入 rz 指令便可将指定的文件上传到当前路径下,输入 sz+文件名 便可将服务器上的文件下载到本机上。将源文件上传成功后,编译后运行起来即可。
在客户端中,sockaddr_in结构体中的IP就填云服务器的公网IP,在确保电脑连网的状态下启动客户端,便可连接云服务器,只要有网络,不管你在哪都能实现通信。
如果你还是一个单片机爱好者,有了云服务器你可以使用ESP8266、4G通信模块、GPRS模块来实现远距离通信,相信你的逼格顿时提升的就不止一点点了。