IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> Java学习笔记—TCP通信 -> 正文阅读

[网络协议]Java学习笔记—TCP通信

一、TCP通信原理

		TCP(Transmission Control Protocol)协议是面向链接的通信协议,即
	数据传输之前,先在发送端和接收端建立逻辑链接,然后再传输数据,它提供
	了两台计算机之间可靠无差错的数据传输。
		TCP通信中必须明确客户端和服务器端,由客户端向服务端发送连接请求
	每次连接的创建都要经过三次握手。
		三次握手:
			第一次握手:客户端向服务端发出连接请求,等待服务器确认。
			第二次握手:服务端向客户端回复一个响应,通知客户端收到连接请求
			第三次握手:客户端再次向服务端发送确认信息,确认连接
		完成三次握手之后,连接建立,客户端和服务端开始进行数据传输,可以
	保证数据安全。

	数据传输结束以后,断开连接会进行四次挥手。
	四次挥手:
	第一次挥手:客户端向服务端发送断开连接请求,表示数据发送完毕。
	第二次挥手:服务端收到请求后,回复客户端,同意关闭连接的请求。
	第三次挥手:服务端向客户端发出断开连接的请求。
	第四次挥手:客户端收到服务端请求后,向服务端发送确认信息,服务端接收
	到确认信息后断开连接。客户端等待之后没有收到服务端的回复,证明服务端
	已正常关闭,客户端也关闭。

二、TCP发送数据

发送数据的步骤:
1、创建客户端Socket对象
2、获取输出流,写入数据
3、释放资源

三、TCP接收数据

接收数据的步骤:
1、创建服务端的Socket对象
2、监听客户端连接,返回Socket对象
3、获取输入流读取数据
4、释放资源

四、TCP通信案例

/*
	TCP客户端
*/
 public static void main(String[] args) throws IOException {
        //创建客户端的Socket对象
        //Socket(String host, int port)
        //          创建一个流套接字并将其连接到指定主机上的指定端口号。
        Socket s = new Socket("192.168.1.5", 10000);
        //OutputStream getOutputStream()返回此套接字的输出流
        OutputStream outputStream = s.getOutputStream();
        //写入一个字符串
        outputStream.write("Hello".getBytes());
		//告诉服务端发送结束
		// void shutdownOutput() 禁用此套接字的输出流。
        s.shutdownOutput();

		//关闭客户端
        s.close();
    }

//TCP服务端
public static void main(String[] args) throws IOException {
        //创建服务端的ServerSocket对象
        //ServerSocket(int port)创建绑定到特定端口的服务器套接字。
        ServerSocket ss = new ServerSocket(10000);

        //获取输入流读取数据,并把数据显示在控制台
        //Socket accept()侦听并接受到此套接字的连接。
        Socket socket = ss.accept();
        // InputStream getInputStream()返回此套接字的输入流。
        InputStream inputStream = socket.getInputStream();

        //读取一次数据
        byte[] bytes = new byte[1024];
        // int read(byte[] b, int off, int len)
        //     将输入流中最多 len 个数据字节读入 byte 数组。
        int len = inputStream.read(bytes);
        String str = new String(bytes,0, len);
        System.out.println("接收到的数据是:" + str);

        //关闭服务端
        ss.close();
    }
先运行服务端后运行客户端。

运行结果:
服务端输出:
	接收到的数据是:Hello!

在这里插入图片描述
发送端无任何信息
在这里插入图片描述

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-02-14 21:34:12  更:2022-02-14 21:36:37 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年10日历 -2024/10/5 11:25:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码