【Java 网络编程】TCP API 简介 ( Socket | ServerSocket )
文章目录
I Socket API 简介
1. Socket 是客户端套接字的类 ;
2. Socket 构造方法 : 调用 Socket() , 创建 Socket 套接字对象 ; 创建之后 , 设置都是默认值 , 可以调用各种设置方法设置 Socket 对象的参数 ;
3. 端口绑定 : bind() , 将某个本地 IP 地址和端口号绑定到 Socket 对象上 ;
4. 连接服务器 : connect() , 连接服务器端 ;
II ServerSocket API 简介
1. ServerSocket 是服务器端套接字类 ;
2. 接受客户端连接 : 调用 accept() , 接受客户端的连接 , 该连接时新的连接 ;
- ① 阻塞状态 : 该方法调用之后 , 会将当前线程阻塞 , 直到客户端的连接到达; 因此需要单独开启一条线程用来建立与客户端的连接 ;
- ② 等待连接阻塞时间设置 : 默认的等待阻塞的时间是无限长的 ;
- ③ 自动创建 Socket 对象 : 客户端连接到达后 , 服务器端会自动创建一个 Socket 对象 , 用于与客户端进行数据交互操作 ;
III Socket 数据交互
1. 写出数据 : 先获取 Socket 输出流 , 调用 write() 相关方法 , 将数据写出到 Socket 输出流中 ;
2. 读取数据 : 先获取 Socket 输入流 , 调用 read() 相关方法 , 将数据读取到 Socket 输入流中 ;
IV Socket 客户端操作流程
1. 客户端创建 Socket : 调用 Socket() 构造方法创建套接字, 此时创建的是空的套接字 ;
2. 绑定本地套接字 : 调用 Socket 对象的 bind() 方法将本地的 IP 地址和端口号绑定到上面创建的套接字上 ;
3. 连接远程客户端 : 调用 Socket 对象的 connect() 方法连接服务器端 , 连接失败直接抛出异常 , 连接成功就可以进行从 Socket 对象中获取输入输出流 , 与服务器端进行数据交互了 ;
V Socket 服务器端操作流程
1. 创建服务器套接字 : 调用 ServerSocket() 构造方法 , 创建 ServerSocket 对象 ;
2. 绑定 : ServerSocket 对象也需要绑定本地的 IP 地址和端口号 ;
3. 等待连接 : 调用 accept() 方法等待客户端连接到达 , 此时会阻塞线程 , 等待连接 ; 如果客户端连接到达 , 就可以与自动创建的 Socket 对象进行数据交互 ;
VI Socket 与 进程
1. 前提 : 应用的每个进程都可以创建一个或多个 Socket 连接 ;
2. 进程间通信 : 不同的进程绑定不同的端口号 , 可以通过 Socket 连接进行进程间通信 ;
相关文章
- java volatile关键字的作用_Java并发编程彻底搞懂volatile关键字「建议收藏」
- java数组定义长度_JAVA数组的定义
- java 图片识别 tess4j_JAVA使用Tess4J进行ocr识别
- java从入门到精通_Java 入门到精通的过程
- java单例模式——详解JAVA单例模式及8种实现方式
- Java网络编程:TCP的socket编程
- java和c语言哪个简单_Java编程和C语言哪个好学
- java 读取字符串文件_Java读取文件为字符串
- 【说站】java网络编程的三要素
- JAVA项目集锦 Java项目视频20套
- JAVA网络编程
- 大数据必学Java基础(八十):网络编程的深入了解
- java高级编程——网络编程(解析网页中的内容)
- 【Android 应用开发】Android 网络编程 API笔记 - java.net 包相关 接口 api
- 【Java 网络编程】UDP 服务器 与 客户端持续交互 案例
- 【Java 网络编程】TCP 传输机制 ( 数据拆分 | 排序 | 顺序发送 | 顺序组装 | 超时重发 )
- 【Java 网络编程】客户端 Socket 创建
- 【Java 网络编程】NIO Buffer 简介 ( 概念 | 数据传输 | 标记 | 位置 | 限制 | 容量 | 标记 | 重置 | 清除 | 翻转 | 重绕 | 链式操作 )
- java并发编程(2):Java多线程-java.util.concurrent高级工具
- 利用Java API通过路径过滤上传多文件至HDFS详解大数据
- 注册MySQL,让你的Java技能更上一层楼(java注册mysql)
- Java网络编程基础知识
- Java程序构建基于Redis的缓存系统(java用redis)
- 使用Redis存储Java对象(redis存java对象)
- 学习Java编程,攻克Oracle难题(java学oracle)
- 编程玩转Java之Oracle编程实战(java中的oracle)
- 编程Oracle数据库中实现Java编程的突破之道(oracle使用java)
- java网络编程学习java聊天程序代码分享