Linux socket跨局域网聊天和文件传输

本文介绍了如何在Linux系统中利用socket实现跨局域网聊天和文件传输,详细讲解了在不同NAT模式下穿透NAT进行通信的方法,包括全锥型、受限圆锥型、端口受限圆锥型和对称NAT的处理策略。代码已上传至GitHub,可供参考和学习。
摘要由CSDN通过智能技术生成

一直想写一个跨局域网聊天和文件传输,以及视频聊天的软件,这两天刚好闲着没啥事就把代码写完了,代码已经上传至github:https://github.com/vinllen/chat

其实之前想法P2P模式,P2P的话必须穿透NAT,现在的NAT有4种模式:

  1. 完全圆锥型NAT
  2. 受限圆锥型NAT
  3. 端口受限圆锥型NAT
  4. 对称NAT(双向NAT)
维基百科给出的定义如下:

  • 1.Full cone NAT,亦即著名的一对一(one-to-one)NAT

一旦一个内部地址(iAddr:port1)映射到外部地址(eAddr:port2),所有发自iAddr:port1的包都经由eAddr:port2向外发送。任意外部主机都能通过给eAddr:port2发包到达iAddr:port1


  • 2.Address-Restricted cone NAT

一旦一个内部地址(iAddr:port1)映射到外部地址(eAddr:port2),所有发自iAddr:port1的包都经由eAddr:port2向外发送。任意外部主机(hostAddr:any)都能通过给eAddr:port2发包到达iAddr:port1的前提是:iAddr:port1之前发送过包到hostAddr:any. "any"也就是说端口不受限制



  • 3.Port-Restricted cone NAT
类似受限制锥形NAT(Restricted cone NAT),但是还有端口限制。

一旦一个内部地址(iAddr:port1)映射到外部地址(eAddr:port2),所有发自iAddr:port1的包都经由eAddr:port2向外发送。一个外部主机(hostAddr:port3)能够发包到达iAddr:port1的前提是:iAddr:port1之前发送过包到hostAddr:port3.

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值