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连接建立的步骤相关推荐

  1. 【计算机网络】传输层 : TCP 连接管理 ( TCP 连接建立 | 三次握手 | TCP 连接释放 | 四次挥手 )

    文章目录 一.TCP 连接管理 二.TCP 连接建立 三.TCP 连接建立 相关报文段 字段 四.SYN 洪泛攻击 五.TCP 连接释放 一.TCP 连接管理 TCP 传输数据过程 : 建立连接 -& ...

  2. TCP连接建立与终止,及状态转换

    TCP连接建立 三路握手 三路握手发生在客户端发起connect请求到服务端accept返回中,在三路握手发生前,服务端 必须准备好接受外来连接,这通常通过服务端调用 (socket.bind.lis ...

  3. TCP 连接建立 故障排查

    TCP连接的状态详解以及故障排查 我们通过了解TCP各个状态,可以排除和定位网络或系统故障时大有帮助. 1.TCP状态 了解TCP之前,先了解几个命令: linux查看tcp的状态命令: 1) net ...

  4. 【TCP专题】TCP连接建立

    今天开始,我们整理一些关于TCP协议的知识.这块的内容写起来是非常费劲的,因为本身TCP协议就不是一个简单的协议,它能获得如今的地位,和其复杂且出色的表现是分不开的. 什么是面向连接 众所周知,TCP ...

  5. TCP连接建立与释放

    tcp建立连接 tcp连接的建立需要经历"三次握手"的过程.过程如下 client发送SYN包(值为j)以及SEQ包到server端,此时client进入SYN_SEND状态.此为 ...

  6. TCP连接建立三握手

    A:主机A的TCP客户进程,B:主机B的TCP服务器进程 最初A.B为CLOSED(关闭)状态,A主动打开连接,B被动打开连接进入LISTEN(收听)状态(被动打开连接不明白,是指从被打开后就一直处于 ...

  7. 关于TCP同时打开-无需Listener的TCP连接建立过程

    六一儿童节的大清早,竟然用这么一篇技术博客来总结童真,也挺好.我把早上的发的朋友圈文字附于文后,以应景. 周中写了一篇关于socket查找的文章,次日,也就是昨天上午,收到一封反馈邮件,好快,十分高兴 ...

  8. TCP连接建立与断开

    TCP协议头 TCP基本协议头占用20个字节,协议中Header Length(4bits)中标明协议头的长度,含义是多少个32bit数据,该字段占用4位,所有整个tcp头最多可以占用60字节. TC ...

  9. 西门子PLC S7-200SMART Modbus TCP通讯的步骤和要点

    Modbus TCP是一个非常传统,应用广泛的通讯协议,很多智能设备都支持该协议.西门子S7-200SMART及1200.1500系列都免费支持(300和400还是要高昂收费),并且做成了标准库,使用 ...

  10. TCP/IP详解之 《网络协议》图解 TCP 连接建立与释放

    http://blog.csdn.net/chenhanzhun/article/details/41622555 注:TCP 连接的建立和释放在网络协议中是比较重要的,由于本人理解也不是很透彻,欢迎 ...

最新文章

  1. 本地 无法启动 SQL Server 错误代码126
  2. Learning Rate--学习率的选择(to be continued)
  3. vmware如何安装solaris10
  4. 卷积神经网络迁移学习
  5. linux教程opensuse,OpenSUSE/Linux 网络配置
  6. git rollback代码都没了_git回滚线上代码
  7. Python编程从入门到实践~操作列表
  8. 赠书 | IoT 的真正目标是什么
  9. python基础3——运算符
  10. Centos7重置Mysql 8.0.1 root 密码
  11. VTM10.0代码学习18:xCheckRDCostMerge2Nx2N()
  12. FileNet小错误汇总
  13. linux英文转换成中文
  14. 为资产分类定义折旧范围_SAP FICO-AA资产知识要点.doc
  15. 运算放大器的基本电路符号
  16. visual paradigm 绘图学习记录
  17. 鲸探发布点评:7月7日发售陈孟昕系列绘画数字藏品
  18. adobe framemaker 资料
  19. MySQL(加强)06 -- 触发器(Trigger)
  20. 为什么lol进服务器时显示错误,《lol手游》显示authenticationerror怎么解决 异常问题解决方法...

热门文章

  1. java中applet下载,Java Applet概述
  2. 哲理故事与管理之道 14 如何留住员工
  3. SQLSERVER大小写转换方法
  4. 飞信WEB接口的一个返回网页C#处理源码
  5. 计算机 去掉快捷方式箭头,去掉桌面快捷方式小箭头方法(无需修改注册表)
  6. Java中文英文数字混合掩码_Java8 中文教程
  7. Xcode 8 size class
  8. RHEL7配置中文输入法-智能拼音
  9. SOLIDWORKS+CAD+UG软件培训 三款电脑学习软件
  10. 谷歌(chrome)恐龙小游戏外挂