• 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. ​ 在服务器端中,通过输入流,写入文件数据到服务器硬盘中
  • 相关阅读:
    android Fragment和FragmentActivity
    android 生成xml文件
    android:在ViewPager中使用Button
    android延迟执行
    android.os.NetworkOnMainThreadException 异常
    导入android工程没有R文件的解决办法
    20个常用的Java程序块
    Java中的==、equals、hasCode方法
    《head first java 》读书笔记
    【写给自己】2014-03-13
  • 原文地址:https://www.cnblogs.com/mitoris/p/14157574.html
Copyright © 2020-2023  润新知