day31_网络编程

  • 网络通信三要素
  • 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对象,,用于于客户端实现通信,该方法会阻塞,直到建立连接

文件上传案例

​ 操作流程:

  1. ​ 在客户端中通过输入流,从硬盘当中读取文件数据到内存
  2. ​ 在客户端中,通过输出流,写入文件数据到服务器端
  3. ​ 在服务器端,通过输入流读取文件数据到服务器端
  4. ​ 在服务器端中,通过输入流,写入文件数据到服务器硬盘中
原文地址:https://www.cnblogs.com/mitoris/p/14157574.html