- 网络通信三要素
- TCP通信
- Socket套接字
- ServerSocket
网络编程三要素:
-
协议
-
IP地址:IPv4、IPv6
IPv4是一个32位的二进制数,通常分为4个字节,表示形式:a.b.c.d 例如:192.168.24.59,其中a、b、c、d都是一个0-255之间的十进制整数,那么最多能够表示255^4 四十二亿多个地址。
IPv6为了扩大地址空间,通过IPv6方式重新定义地址空间,采用128位地址长度 共16个字节,分成8组十六进制数,表示形式:ABCD:EF01:1234:5678:ABCD:EF01:1234:5678
检查网络连接是否正常:ping IP地址
查看本机IP:ipconfig
特殊的IP地址:
本机的IP地址:127.0.0.1 localhost 通过hosts文件,可以自定义自己的域名
-
端口号:如何区分在网络通信中打开的这些进程?通过端口号,可以准确的找到彼此。用两个字节表示的整数,取值范围是0-65535(和char范围取值范围大致一样)。其中,0-1023之间的端口号已经被一些知名的应用和网络服务占用,常规应用只能使用1024及以上的端口号。如果端口号被另外一个服务 / 应用程序占用,会导致当前程序启动失败
常用的端口号:
Tomcat应用服务器:8080
HTTP:80 www.baidu.com:80 80可以省略不写
数据库服务器:MySql:3306 Oracle:1521
Ideal开发工具:63342
利用协议
+IP地址
+端口号
三要素组合,就可以标识网络中的任意一个进程,那么进程间的通信则可进行
TCP通信
TCP通信能够实现两台计算机之间的数据交互,通信的两端、严格区分客户端和服务器端
两端通信的步骤:
1.服务端首先需要启动,等待客户端连接
2.客户端需要主动连接服务器端,连接成功才能通信,服务器端不可以主动连接客户端
在Java当中,提供了两个类用于实现TCP通信:
客户端:java.net.Socket
类,创建Socket对象,向服务器端发送连接请求,服务端回响请求,两者开始建立连接进行通信
服务器端:java.net.ServerSocket
类,创建ServerSocket对象,相当于开启一个服务,等待客户端的连接
Socket类
实现了客户端套接字,套接字指的是 两台设备之间通信的端点
构造方法:
- public Socket(String host ,int port):创建套接字对象并将其连接到指定主机(服务器端)上的指定端口号,如果指定的host是null,相当于指定地址为回送地址
备注:回送地址(127.x.x.x)是本机回送地址(loopback address),主要用于网络软件测试用的本机上的进程间通信,无论什么程序,一旦使用回送地址发送数据,立即返回,不进行任何数据传输
成员方法:
- public InputStream getInputStream():获取套接字的输入流
- public OutputStream getOutputStream():获取此套接字的输出流
- public void close():关闭此套接字
- public void shutdoownOutout():禁用此套接字的输出流
- 任何先前写入的数据都将被发送,随后终止此输出流
ServerSocket类
实现了服务器套接字,该对象等待通过网络的请求
构造方法:
- public ServerSocket(int port):使用该构造器在创建ServerSocket对象时,就可以将其绑定到一个指定的端口号上,参数port就是端口号
成员方法:
public Socket accept():监听并接收连接,返回一个新的Socket对象,,用于于客户端实现通信,该方法会阻塞,直到建立连接
文件上传案例
操作流程:
- 在客户端中通过输入流,从硬盘当中读取文件数据到内存
- 在客户端中,通过输出流,写入文件数据到服务器端
- 在服务器端,通过输入流读取文件数据到服务器端
- 在服务器端中,通过输入流,写入文件数据到服务器硬盘中