Socket编程学习笔记(二)
来源:互联网 发布:java计算时间转换 编辑:程序博客网 时间:2024/05/16 09:04
编者最近想用Socket编程的知识做一个类似QQ的即时通讯软件,但后来发现,以前的编写的Socket程序都是在局域网内部进行通讯,而编写这个通讯软件就必须用到Socket的跨外网通讯知识。想解决这个问题,我们需要掌握端口映射的知识。这次,就让小编来给大家补补课吧。
一、什么是端口映射:
端口映射就是将外网主机的IP地址的一个端口映射到内网中一台机器,提供相应的服务。当用户访问该IP的这个端口时,服务器自动将请求映射到对应局域网内部的机器上。端口映射有动态和静态之分。
通俗一点来说,就是将此服务端进程的内网访问入口映射到外网端口,然后客户端进程只需要从外网的访问入口进入即可访问此服务端进程。
二、如何配置端口映射:
1.通过路由器配置
2.使用第三方软件如“花生壳”
注:编者用的是校园网,所以只能使用第三方软件进行端口配置。所以编者将重点讲一讲“花生壳”的配置方法
①官网下载花生壳:
②注册用户:
这里注册成功后会自动获得一个域名
③登录客户端
并点击内网穿透:
④设置内网穿透:
⑤设置完成
以后直接使用外网访问地址就行了。
注意:在使用端口映射的过程中,“花生壳”客户端需要一直处于开启状态,否则,端口映射将失效。
//客户端代码import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.InetAddress;import java.net.Socket;public class ClientSocketTest { public static void main(String[] args)throws IOException{ InetAddress inetAddress = InetAddress.getByName("外网ip"); String hostAddr = inetAddress.getHostAddress(); System.out.println("host addr:"+hostAddr); int port = 28621;//这里填外网访问端口 Socket clientSocket = new Socket(hostAddr,port); BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); PrintWriter writer = new PrintWriter(new OutputStreamWriter(clientSocket.getOutputStream()), true); String str = null; while(true){ str = in.readLine(); writer.println(str); if(str.equals("quit")) break; System.out.println(reader.readLine()); } clientSocket.close(); in.close(); reader.close(); writer.close(); }}
0 0
- Socket编程学习笔记(二)
- socket编程学习笔记(二)
- Socket网络编程笔记(二)
- socket编程学习笔记
- socket 编程学习笔记
- socket编程学习笔记
- Linux下Socket编程学习(二)
- Java 网络编程 学习笔记二 Socket 用法
- 学习笔记之SOCKET网络编程之二
- 【网络】c++ socket 学习笔记(二)
- Python socket编程学习(二)socket客户端
- Linux学习——Linux网络笔记二(UDP Socket 编程)
- 网络编程学习笔记(一)-----socket
- Socket网络编程学习笔记(转)
- Python之学习笔记(socket编程)
- JAVA Socket 编程学习笔记(一)
- JAVA Socket 编程学习笔记(一)
- Socket编程学习笔记(一)
- lucene简单使用
- C语言两个整数相除所得结果仍是整数,而非浮点数
- 卖家对比,ebay,淘宝
- 数据结构 (线段树入门详细介绍)(单点更新)(结构体)
- G
- Socket编程学习笔记(二)
- 个人代码记录-学生社团管理
- 跟小博老师一起学习数据库 ——H2内存数据库
- 子程序执行return语句,之后未执行的语句将不再执行
- JSP 生命周期
- POJ 2299 Ultra QuickSort <树状数组+离散化 / 归并排序>
- HDU
- JDK源码阅读之HashMap -- hash值计算方式、下标查找及tableSizeFor方法
- python解leetcode——13.Roman to Integer (罗马数字转为整数)