C语言端口映射
我知道socket编程只能在局域网下工作,那么想访问公网就要进行端口映射,这个映射的过程,要向网关发射数据包,这个网关的地址是多少,192.168.1.1吗,那,发数据包...
我知道socket编程只能在局域网下工作,那么想访问公网就要进行端口映射,这个映射的过程,要向网关发射数据包,这个网关的地址是多少,192.168.1.1吗,那,发数据包的规则有什么,就是,网关会往回发什么代表成功了,用完后又要怎么关闭端口映射么,谢谢.
展开
3个回答
展开全部
其实socket在局域网和在外网的用法差不多,假如服务器端口是1234,那么你要设置服务端的路由器,服务端的路由器的特定端口:1234 映射服务端所在局域网IP:192.168.0.120。
服务端的公网的IP如:112.120.133.62,那么112.120.133.62:1234 就是192.168.0.120
而客户端在另一个局域网,要是想与服务器通信,那么就connect("112.120.133.62",1234)
而你服务端的recv函数的变量是可以取到客户端的IP与端口(你看看这个函数说明),直接用这个变量发回客户端就可以了
服务端的公网的IP如:112.120.133.62,那么112.120.133.62:1234 就是192.168.0.120
而客户端在另一个局域网,要是想与服务器通信,那么就connect("112.120.133.62",1234)
而你服务端的recv函数的变量是可以取到客户端的IP与端口(你看看这个函数说明),直接用这个变量发回客户端就可以了
更多追问追答
追问
我的计算机通过路由器连接在内网里,应该是不能直接联系外网的,要通过路由器转发数据,我是说在建立这个映射关系的时候要向网关发送什么数据.
追答
你的意思是 服务器跟客户端不在 一个局域网?
如果不在局域网的话你服务器路由器的Lan口对应的外网口肯定有一个外网地址,那你客户端就是向这个地址发送就行了
你向自己路由器的网关发送,路由器收到以后会查看路由表发现你发送的192.168.1.1,他就不会转发,只会在你本地局域网里面通信。
所以不管服务端还是客户端必须有一个外网地址加一个路由器的端口映射,就像其他人说的NAT。
快又稳
2024-10-28 广告
2024-10-28 广告
在Linux环境下配置基于域名的虚拟主机,需安装Apache或Nginx等Web服务器,并编辑配置文件。以Apache为例,需创建虚拟主机配置文件,指定域名、文档根目录等,然后启用该配置文件并重启Apache服务。同样,Nginx也需在相应...
点击进入详情页
本回答由快又稳提供
展开全部
你说的端口映射是NAT就是网络地址转换机制,具体的话由于太多了就不说了,可以自行看百度百科。
而发送数据包的时候怎样才能知道正确投递的地址,靠的是路由表。路由表是存储在操作系统内的一个表。
而至于什么时候关闭端口这就要看这个连接是TCP还是UDP了。
而发送数据包的时候怎样才能知道正确投递的地址,靠的是路由表。路由表是存储在操作系统内的一个表。
而至于什么时候关闭端口这就要看这个连接是TCP还是UDP了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
访问公网不用算口映射,端口映射是如果你的网关有个公网地址,其他人可以通过网关访问你的局域网服务器。
看你的说的更像内网穿透
看你的说的更像内网穿透
追问
我的计算机通过路由器连接在内网里,这样不是不能直接访问公网吗,不是要端口映射的吗.
我是想问,端口映射是不是要向网关发送数据,发送的是什么呢?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询