学了Linux c的网络编程,但是写的程序都是在局域网内的,如果我想写一个连到互联网上的程序怎么写啊?我一直想不明白数据链路是怎么形成的,我抓了一个QQ的数据包,客户端是我的ip,服务器在网上查是广东电信的ip,但是仅仅知道这两个有什么用?我的是172.17.100.9,服务器是183.60.19.36,我要是按着socket的bind connect的那一套来的话是根本连不上的吧?那应该怎样做才能把这个包像QQ软件那样发到腾讯的服务器去呢?
局域网和广域网是一样的。你只要在你的路由器上把你局域网程序监听的端口映射到路由器上,绑定你那个内网的ip,那么互联网另一端的程序直接访问你路由器的公网ip和端口就可以通讯了。
只要你的电脑连接到了互联网,那么使用代码获取互联网上的资源是可以的,下载指令什么的。但是往腾讯服务器上发数据包,会被腾讯拦截的。
你要写 访问广域网 的程序 首先得有一台自己的服务器 你自己写的程序 无权访问别人的服务器
之前也有你这样的困惑,现在就没有了,你可以分几个步骤理解:
1、相信你已经可以在自己电脑上建立一个服务器,如果另一台电脑在同一个内网(例如路由器),便可以下载你电脑里相应的东西
2、以上的只是内网之间的信息交换,没有连接在外网上面去,或者说是没有权利连接在外网上面去,例如我在广州用我的网线,你在北京用你的网线,我就没办法访问你在自己电脑上搭建的服务器
3、那么如何解决2中问题呢,那就需要你购买一个域名,把域名绑定在你电脑搭建的服务器上面,我就可以通过域名找到你的电脑,从这个域名里下载你电脑上面的东西,如果你电脑不关机,我就可以一直访问你的域名也就相当于你的电脑
4、举一个简单的例子,我们通过QQ传文件,我并不是直接发给你,而是通过腾讯的域名和服务器发给你的,相当于腾讯是第三人,来交换我们的数据
5、至于如何做一个数据包传到腾讯服务器上,那你需要知道他们之间的数据协议,还有加密方式,按照他的协议和加密方式,发送到他的与域名绑定的服务器里去