11 网络编程

目录

 

软件结构:

网络编程三要素:

协议:通信的规则

ip地址:唯一标识每一台计算机

端口号:唯一标识计算机中的每一个进程

TCP通信程序:

Socket类:

成员方法:

ServerSocket类

通信过程注意事项:

socket.shutdownOutput()

通信过程优化:

InputStreamReader类:


​​​​​​​

  1. 软件结构:

    1. C/S

    2. B/S

  2. 网络编程三要素:

    1. 协议:通信的规则

      1. TCP

        1. 特点

      2. UDP

        1. 特点

    2. ip地址:唯一标识每一台计算机

      1. IPv4

        1. 4个字节

      2. IPv6

        1. 16个字节

    3. 端口号:唯一标识计算机中的每一个进程

      1. 门牌号

      2. 常用端口:

        1. 网络端口:80,不写也会默认添加

        2. 数据库端口:

          1. mysql:3306

          2. oracle:1521

        3. Tomcat服务器:8080

  3. TCP通信程序

    1.  服务器与客户端需要建立一个连接,这个连接是一个IO对象,这个对象是一个字节流对象,因为要传输的数据不可能仅仅是字符,还有其他类型的数据

    2. 服务器没有自己的IO流,服务器使用accept方法获取客户端的socket对象,而socket对象中包含着客户端的IO流对象,用这种方法也可以实现服务器和多个客户端设备进行通讯

    3. Socket类:

      1. 其中包括了ip地址、端口号和流对象

      2. 当创建socket类时,客户端就会去请求服务器并和服务器经过3次握手建立连接通路

      3. 成员方法:

        1. public InputStream getInputStream() : 返回此套接字的输入流。

          1. 使用此输入流读取服务器发来的数据

        2. public OutputStream getOutputStream() : 返回此套接字的输出流。

          1. 使用此输出流向服务器发送数据

      4. 代码:

        1. Socket socket = new Socket("127.0.0.1", 8888);

        2. OutputStream os = socket.getOutputStream();

        3. os.write("Hello Server!!!".getBytes());

        4. socket.close();

    4. ServerSocket类

      1. 构造方法:

        1. 端口号可以随便写

    5. 通信过程注意事项:

      1. 要先启动服务器端

        1. 先启动客户端的话会报错

      2. 最后一定要把能关闭的流全部关闭

      3. socket.shutdownOutput()

        1. 作用:

          1. 在客户端的输出流中写入一个结束标志

        2. 原理:

          1. 客户端向服务器端发送数据时,在while循环中,当读取到结束标志时就会跳出while循环,而没有把最后的结束标志发送出去,服务器端没有接受到结束标志就会一直等待,造成两端无法正常结束

    6. 通信过程优化:

      1. 文件命名:

        1. 根据系统时间确定文件名字

      2. 循环接收:

      3. 多线程提高效率:

        1. 要使用try...catch处理异常,因为run方法是没有像上层抛出异常的

      4. 消息回写:

    7. InputStreamReader类:

      1. 是字节流到字符流的桥梁,可以将字节流转化字符流

      2. 方法:

        1. InputStreamReader( InputStream in ) 返回一个Reader的子类对象

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值