socket编程

一、基础知识

1.两台计算机间进行通讯需要以下三个条件:
IP地址、协议、端口号
2.TCP/IP协议:
是目前世界上应用最为广泛的协议,
是以TCP和IP为基础的不同层次上多个协议的集合,也成TCP/IP协议族、或TCP/IP协议栈
TCP:Transmission Control Protocol 传输控制协议
IP:Internet Protocol 互联网协议
3.TCP/IP五层模型
应用层:HTTP、FTP、SMTP、Telnet等
传输层:TCP
网络层:IP
数据链路层:
物理层:网线、双绞线、网卡等
4.IP地址
为实现网络中不同计算机之间的通信,每台计算机都必须有一个唯一的标识—IP地址。
32位二进制
5.端口
区分一台主机的多个不同应用程序,端口号范围为0-65535,其中0-1023位为系统保留。
如:HTTP:80 FTP:21 Telnet:23
IP地址+端口号 = Socket
Socket是网络上运行的程序之间双向通信链路的终结点,是TCP和UDP的基础
6.Socket套接字:
网络上具有唯一标识的IP地址和端口组合在一起才能构成唯一能识别的标识符套接字

      Socket原理机制:
         通信的两端都有Socket
         网络通信其实就是Socket间的通信
         数据在两个Socket间通过IO传输  

7.Java中的网络支持
针对网络通信的不同层次,Java提供了不同的API,其提供的网络功能有四大类:

          InetAddress:   用于标识网络上的硬件资源,主要是IP地址
          URL:   统一资源定位符,通过URL可以直接读取或写入网络上的数据
          Sockets:   使用TCP协议实现的网络通信Socket相关的类
          Datagram:   使用UDP协议,将数据保存在用户数据报中,通过网络进行通信。

InetAddress:标识网络上的硬件资源,主要是IP地址

在这里插入图片描述

URL类

表示Internet上某一资源的地址,协议名:资源名称

在这里插入图片描述

使用URL读取网页内容

       通过URL对象的openStream()方法可以得到指定资源的输入流,通过流能够读取或访问网页上的资源  

在这里插入图片描述
字节/字符流

  1. InputStream 和OutputStream,两个是为字节流设计的,主要用来处理字节或二进制对象,
  2. Reader和 Writer.两个是为字符流(一个字符占两个字节)设计的,主要用来处理字符或字符串.
    字符流处理的单元为2个字节的Unicode字符,分别操作字符、字符数组或字符串,
    字节流处理单元为1个字节,操作字节和字节数组。
    所以字符流是由Java虚拟机将字节转化为2个字节的Unicode字符为单位的字符而成的,
    所以它对多国语言支持性比较好!

如果是音频文件、图片、歌曲,就用字节流好点,
如果是关系到中文(文本)的,用字符流好点

所有文件的储存是都是字节(byte)的储存,在磁盘上保留的并不是文件的字符而是先把字符编码成字节,再储存这些字节到磁盘。
在读取文件(特别是文本文件)时,也是一个字节一个字节地读取以形成字节序列
1,字节流可用于任何类型的对象,包括二进制对象,而字符流只能处理字符或者字符串
2,字节流提供了处理任何类型的IO操作的功能,但它不能直接处理Unicode字符,而字符流就可以

二、TCP编程

套接字:

TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字(socket)或插口。

套接字用(IP地址:端口号)表示。
它是网络通信过程中端点的抽象表示,
包含进行网络通信必需的五种信息:
连接使用的协议,
本地主机的IP地址,
本地进程的协议端口,
远地主机的IP地址,
远地进程的协议端口。

     1、TCP协议是面向连接的、可靠的、有序的、以字节流的方式发送数据,
     通过三次握手方式建立连接,形成传输数据的通道,在连接中进行大量数据的传输,效率会稍低
     2、Java中基于TCP协议实现网络通信的类
        客户端的Socket类
        服务器端的ServerSocket类

在这里插入图片描述

       3、Socket通信的步骤
             ① 创建ServerSocket和Socket
             ② 打开连接到Socket的输入/输出流
             ③ 按照协议对Socket进行读/写操作
             ④ 关闭输入输出流、关闭Socket
       4、服务器端:
             ① 创建ServerSocket对象,绑定监听端口
             ② 通过accept()方法监听客户端请求
             ③ 连接建立后,通过**输入流读取**客户端发送的请求信息
             ④ 通过**输出流向客户端发送**乡音信息
             ⑤ 关闭相关资源

在这里插入图片描述

5、客户端:

             ① 创建Socket对象,指明需要连接的服务器的地址和端口号
             ② 连接建立后,通过输出流想服务器端发送请求信息
             ③ 通过输入流获取服务器响应的信息
             ④ 关闭响应资源 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值