Linux网络编程之TCP编程

来源:互联网 发布:工商联副主席 知乎 编辑:程序博客网 时间:2024/05/17 23:02

一.概述
TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。

二.TCP 具有以下特点
1.电话系统服务模式的抽象
2.每一次完整的数据传输都要经过建立连接、使用连接、终止连接的过程
3.可靠、出错重传、且每收到一个数据都要给出相应的确认,保证数据传输的可靠性。

三.TCP 客户端编程
对于 TCP 客户端编程流程,有点类似于打电话过程:找个可以通话的手机(socket() ) -> 拨通对方号码并确定对方是自己要找的人( connect() ) -> 主动聊天( send() 或 write() )-> 或者,接收对方的回话( recv() 或 read() )-> 通信结束后,双方说再见挂电话(close() )。

四.TCP 服务器编程
做为 TCP 服务器需要具备的条件呢?
具备一个可以确知的地址( bind() ):相当于我们要明确知道移动客服的号码,才能给他们电话;
让操作系统知道是一个服务器,而不是客户端( listen() ):相当于移动的客服,他们主要的职责是被动接听用户电话,而不是主动打电话骚扰用户;
等待连接的到来( accept() ):移动客服时刻等待着,来一个客户接听一个。

接收端使用 bind() 函数,来完成地址结构与socket 套接字的绑定,这样 ip、port 就固定了,发送端即可发送数据给有明确地址( ip+port ) 的接收端。

对于 TCP 服务器编程流程,有点类似于接电话过程:找个可以通话的手机(socket() ) -> 插上电话卡固定一个号码( bind() ) -> 职责为被动接听,给手机设置一个铃声来监听是否有来电( listen() ) -> 有来电,确定双方的关系后,才真正接通不挂电话( accept() ) -> 接听对方的诉说( recv() ) -> 适当给些回话( send() )-> 通信结束后,双方说再见挂电话( close() )。

原创粉丝点击