广域网实现p2p文件传输 如何实现nat穿透 求java或C++源代码

广域网实现p2p文件传输 如何实现nat穿透 求java或C++源代码,第1张

假设有两台分别处于各自的私有网络中的主机:A和B;N1和N2是两个NAT设备;S是一个使用了一个众所周知的、从全球任何地方都能访问得到的IP地址的公共服务器
步骤一:A和B分别和S建立UDP连接;NAT设备N1和N2创建UDP转换状态并分配临时的外部端口
步骤二:S将这些端口号传回A和B
步骤三:A和B通过转换好的端口直接联系到对方的NAT设备;NAT设备则利用先前创建的转换状态将分组发往A和B
源码已发送请查收

localhost是指你本机,它可以改成127001,如果跟其他机器通讯就改成另一台机器的ip地址。8800是指通讯端口;

你把OS里的O理解为output,IS里的I理解为input。OS是输出端,输出端把数据放到BufferedReader,BufferedReader通过端口传输到IS后,再读取。

以下是一个展示java使用tcp通讯的简单例子,包括服务器和客户端代码:\x0d\\x0d\/\x0d\ TCPServer\x0d\ /\x0d\import javaio;\x0d\import javanet;\x0d\class TCPServer{\x0d\ public static void main(String[] args)throws IOException{\x0d\ ServerSocket listen = new ServerSocket(5050);\x0d\ \x0d\ Socket server = listenaccept();\x0d\ InputStream in = servergetInputStream();\x0d\ OutputStream out = servergetOutputStream();\x0d\ char c = (char)inread();\x0d\ Systemoutprintln("收到:" + c);\x0d\ outwrite('s');\x0d\ \x0d\ outclose();\x0d\ inclose();\x0d\ serverclose();\x0d\ listenclose();\x0d\ }\x0d\}\x0d\\x0d\/\x0d\ TCPClient\x0d\ /\x0d\import javaio;\x0d\import javanet;\x0d\class TCPClient{\x0d\ public static void main(String[] args)throws IOException{\x0d\ Socket client = new Socket("127001" , 5050);\x0d\ InputStream in = clientgetInputStream();\x0d\ OutputStream out = clientgetOutputStream();\x0d\ \x0d\ outwrite('c');\x0d\ char c = (char)inread();\x0d\ Systemoutprintln("收到:" + c);\x0d\ outclose();\x0d\ inclose();\x0d\ clientclose();\x0d\ }\x0d\}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10594871.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-09
下一篇 2023-05-09

发表评论

登录后才能评论

评论列表(0条)

保存