(JAVA)-(网络编程)-TCP协议

news/2025/1/20 6:40:53/

客户端(发送端)

1.创建客户端的Socket对象:

参数需要传递要服务端(接收端)的IP和端口,会去链接服务端,服务端连接不上代码会报错

Socket socket =new Socket("127.0.0.1",10000);

2.从Socket对象中获取输出流,写出数据

  OutputStream os = socket.getOutputStream();//获取字节流
os.write("邓子AND诩子".getBytes());//写入数据

3.释放资源

socket.close();

 服务端(接收端)

1.创建ServerSocket对象

连接不上端口会报错 

ServerSocket ss=new ServerSocket(10000);//绑定一个接收端的端口,需要跟发送端保持一致

2.监听客户端的链接:等待客户端的链接,连接成功返回客户端的Socket对象,没连接则一直等待

Socket socket=ss.accept();

3.从连接通道中获取输入流读取数据

InputStream is=socket.getInputStream();

注意:获取到的是字节流,如果传输中文,可能出现乱码问题,将字节流进行包装成高级流即可,详情可看我之前的IO流文章。

4.释放资源

socket.close();//断开跟客户端的连接
ss.clode();//关闭服务器

细节:  

1.运行代码要先运行服务端

2.客户端创建Socket对象时,连接就建立

3.Socket可以看成一个通道,输入输出流是在通道中建立的通道关闭流自动关闭。

客户端和服务端通过三次握手和四次挥手两个协议保证连接成功和断开

1.三次握手:保证连接的建立

1.客户端向服务端发出连接请求,等待服务器确认

2.服务器返回客户端一个响应,告诉客户端收到了请求

3.客户端向服务端再次发出确认消息,连接成功建立

2.四次挥手:确保连接断开确保连接断开且数据处理完毕

1.客户端向服务端发出取消连接请求

2.服务器向客户端返回一个响应,表示收到客户端请求

3.服务器将通道内数据处理完毕,再次向客户端发出确认取消信息

4.客户端再次发送确认信息,连接断开。


http://www.ppmy.cn/news/1288238.html

相关文章

修改jenkins的目录(JENKINS_HOME)

默认JENKINS_HOME是/var/lib/jenkins/ 现要修改为/home/jenkins_data/jenkins 最开始 sudo cp -a /var/lib/jenkins/ /home/jenkins_data/ 然后如下操作: 1、首先 /etc/sysconfig/jenkins:jenkins配置文件,“端口”,“JENKIN…

【Vue2+3入门到实战】(18)VUE之Vuex状态管理器概述、VueX的安装、核心概念 State状态代码实现 详细讲解

目录 一、[Vuex](https://vuex.vuejs.org/zh/) 概述1.是什么2.使用场景3.优势4.注意: 二、需求: 多组件共享数据1.创建项目2.创建三个组件, 目录如下3.源代码如下 三、vuex 的使用 - 创建仓库1.安装 vuex2.新建 store/index.js 专门存放 vuex3.创建仓库 store/index…

Java——ArraryList线程不安全

目录 前言一、为什么ArraryList线程不安全?二、具体可以看debug源码后续敬请期待 前言 Java——ArraryList线程不安全 一、为什么ArraryList线程不安全? 因为没有synchronized,这个关键字做线程互斥,没有这个关键字,…

关键字:throw关键字

在 Java 中,throw关键字用于抛出异常。当程序执行过程中发生意外情况,如错误的输入、资源不足、错误的逻辑等,导致程序无法正常执行下去时,可以使用throw关键字抛出异常。 以下是使用throw关键字的一些示例: 抛出异常…

【仅供测试】

https://microsoftedge.microsoft.com/addons/detail/%E7%AF%A1%E6%94%B9%E7%8C%B4/iikmkjmpaadaobahmlepeloendndfphd 测试网站: https://www.alipan.com/s/tJ5uzFvp2aF // UserScript // name 阿里云盘助手 // namespace http://tampermonkey.net/ // …

PostgreSQL数据库的json操作

1.操作符 select json字段::json->key值 from order -- 对象域 select json字段::json->>key值 from order -- 文本 select json字段::json#>{key值} from order -- 对象域 select json字段::json#>>{key值} from order -- 文本对象域表示还能继续操作&#…

前端 js 基础(1)

js 结果输出 &#xff08;点击按钮修改文字 &#xff09; <!DOCTYPE html> <html> <head></head><body><h2>Head 中的 JavaScript</h2><p id"demo">一个段落。</p><button type"button" onclic…

前端八股文(HTML篇)一

目录 1.什么是DOCTYPE,有何用呢&#xff1f; 2.说说对html语义化的理解 3.src和href的区别&#xff1f; 4.title与h1的区别&#xff0c;b与strong的区别&#xff0c;i与em的区别&#xff1f; 5.什么是严格模式与混杂模式&#xff1f; 6.前端页面有哪三层构成&#xff0c;分…