![广域网实现p2p文件传输 如何实现nat穿透 求java或C++源代码,第1张 广域网实现p2p文件传输 如何实现nat穿透 求java或C++源代码,第1张](/aiimages/%E5%B9%BF%E5%9F%9F%E7%BD%91%E5%AE%9E%E7%8E%B0p2p%E6%96%87%E4%BB%B6%E4%BC%A0%E8%BE%93+%E5%A6%82%E4%BD%95%E5%AE%9E%E7%8E%B0nat%E7%A9%BF%E9%80%8F+%E6%B1%82java%E6%88%96C%2B%2B%E6%BA%90%E4%BB%A3%E7%A0%81.png)
假设有两台分别处于各自的私有网络中的主机: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\}
评论列表(0条)