TCP连接建立的步骤
TCP连接建立的步骤
一、客户端向服务器端发送连接请求后,就被动地等待服务器的响应。典型的TCP客户端要经过下面三步操作:
1、创建一个Socket实例:构造函数向指定的远程主机和端口建立一个TCP连接;
2.通过套接字的I/O流与服务端通信;
3、使用Socket类的close方法关闭连接。
public class MyClient {public static void main(String[] args) {try {Socket socket = new Socket("127.0.0.1",9999);BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));BufferedReader receiveServer = new BufferedReader(new InputStreamReader(socket.getInputStream()));PrintWriter out = new PrintWriter(socket.getOutputStream());while(true) {String msg = reader.readLine();out.println(msg);out.flush();if ("end".equals(msg)) {break;}System.out.println(receiveServer.readLine());}socket.close();} catch (IOException e) {e.printStackTrace();}}
}
二、服务端的工作是建立一个通信终端,并被动地等待客户端的连接。典型的TCP服务端执行如下两步操作:
1、创建一个ServerSocket实例并指定本地端口,用来监听客户端在该端口发送的TCP连接请求;
2、重复执行:
1)调用ServerSocket的accept()方法以获取客户端连接,并通过其返回值创建一个Socket实例;
2)为返回的Socket实例开启新的线程,并使用返回的Socket实例的I/O流与客户端通信;
3)通信完成后,使用Socket类的close()方法关闭该客户端的套接字连接。
public class MyServer {public static void main(String[] args) {try {/*制定端口实例化一个ServerSocket*/ServerSocket server = new ServerSocket(9999);/*调用accept()方法,以在等待连接期间造成阻塞*/Socket client = server.accept();System.out.println("客户端已连接");/*获取Socket的流以进行读写操作*/BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));PrintWriter out = new PrintWriter(client.getOutputStream());while(true) {String msg = in.readLine();System.out.println(msg);out.println("服务器收到信息:" + msg);out.flush();if ("end".equals(msg)) {break;}}server.close();} catch (IOException e) {e.printStackTrace();}}
}
TCP连接建立的步骤相关推荐
- 【计算机网络】传输层 : TCP 连接管理 ( TCP 连接建立 | 三次握手 | TCP 连接释放 | 四次挥手 )
文章目录 一.TCP 连接管理 二.TCP 连接建立 三.TCP 连接建立 相关报文段 字段 四.SYN 洪泛攻击 五.TCP 连接释放 一.TCP 连接管理 TCP 传输数据过程 : 建立连接 -& ...
- TCP连接建立与终止,及状态转换
TCP连接建立 三路握手 三路握手发生在客户端发起connect请求到服务端accept返回中,在三路握手发生前,服务端 必须准备好接受外来连接,这通常通过服务端调用 (socket.bind.lis ...
- TCP 连接建立 故障排查
TCP连接的状态详解以及故障排查 我们通过了解TCP各个状态,可以排除和定位网络或系统故障时大有帮助. 1.TCP状态 了解TCP之前,先了解几个命令: linux查看tcp的状态命令: 1) net ...
- 【TCP专题】TCP连接建立
今天开始,我们整理一些关于TCP协议的知识.这块的内容写起来是非常费劲的,因为本身TCP协议就不是一个简单的协议,它能获得如今的地位,和其复杂且出色的表现是分不开的. 什么是面向连接 众所周知,TCP ...
- TCP连接建立与释放
tcp建立连接 tcp连接的建立需要经历"三次握手"的过程.过程如下 client发送SYN包(值为j)以及SEQ包到server端,此时client进入SYN_SEND状态.此为 ...
- TCP连接建立三握手
A:主机A的TCP客户进程,B:主机B的TCP服务器进程 最初A.B为CLOSED(关闭)状态,A主动打开连接,B被动打开连接进入LISTEN(收听)状态(被动打开连接不明白,是指从被打开后就一直处于 ...
- 关于TCP同时打开-无需Listener的TCP连接建立过程
六一儿童节的大清早,竟然用这么一篇技术博客来总结童真,也挺好.我把早上的发的朋友圈文字附于文后,以应景. 周中写了一篇关于socket查找的文章,次日,也就是昨天上午,收到一封反馈邮件,好快,十分高兴 ...
- TCP连接建立与断开
TCP协议头 TCP基本协议头占用20个字节,协议中Header Length(4bits)中标明协议头的长度,含义是多少个32bit数据,该字段占用4位,所有整个tcp头最多可以占用60字节. TC ...
- 西门子PLC S7-200SMART Modbus TCP通讯的步骤和要点
Modbus TCP是一个非常传统,应用广泛的通讯协议,很多智能设备都支持该协议.西门子S7-200SMART及1200.1500系列都免费支持(300和400还是要高昂收费),并且做成了标准库,使用 ...
- TCP/IP详解之 《网络协议》图解 TCP 连接建立与释放
http://blog.csdn.net/chenhanzhun/article/details/41622555 注:TCP 连接的建立和释放在网络协议中是比较重要的,由于本人理解也不是很透彻,欢迎 ...
最新文章
- 本地 无法启动 SQL Server 错误代码126
- Learning Rate--学习率的选择(to be continued)
- vmware如何安装solaris10
- 卷积神经网络迁移学习
- linux教程opensuse,OpenSUSE/Linux 网络配置
- git rollback代码都没了_git回滚线上代码
- Python编程从入门到实践~操作列表
- 赠书 | IoT 的真正目标是什么
- python基础3——运算符
- Centos7重置Mysql 8.0.1 root 密码
- VTM10.0代码学习18:xCheckRDCostMerge2Nx2N()
- FileNet小错误汇总
- linux英文转换成中文
- 为资产分类定义折旧范围_SAP FICO-AA资产知识要点.doc
- 运算放大器的基本电路符号
- visual paradigm 绘图学习记录
- 鲸探发布点评:7月7日发售陈孟昕系列绘画数字藏品
- adobe framemaker 资料
- MySQL(加强)06 -- 触发器(Trigger)
- 为什么lol进服务器时显示错误,《lol手游》显示authenticationerror怎么解决 异常问题解决方法...