TCP 的介绍
TCP 也叫传输控制协议 (Transmission Control Protocol) 是一种面向连接的, 可靠的, 基于字节流的传输层通信协议, 由 IETF 的 RFC 793 定义.
TCP 与 UDP 区别总结:
1,TCP 面向连接(如打电话要先拨号建立连接);UDP 是无连接的, 即发送数据之前不需要建立连接
2,TCP 提供可靠的服务. 也就是说, 通过 TCP 连接传送的数据, 无差错, 不丢失, 不重复, 且按序到达; UDP 尽最大努力交付, 即不保证可靠交付
3,TCP 面向字节流, 实际上是 TCP 把数据看成一连串无结构的字节流; UDP 是面向报文的
UDP 没有拥塞控制, 因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用, 如 IP 电话, 实时视频会议等)
4, 每一条 TCP 连接只能是点到点的; UDP 支持一对一, 一对多, 多对一和多对多的交互通信
5,TCP 首部开销 20 字节; UDP 的首部开销小, 只有 8 个字节
6,TCP 的逻辑通信信道是全双工的可靠信道, UDP 则是不可靠信道
- from?socket?import?*
- #? 创建 socket
- tcp_client_socket?=?socket(AF_INET,?SOCK_STREAM)
- #? 目的信息
- server_ip?=?input("请输入服务器 ip:")
- server_port?=?int(input("请输入服务器 port:"))
- #? 链接服务器
- tcp_client_socket.connect((server_ip,?server_port))
- #? 提示用户输入数据
- send_data?=?input("请输入要发送的数据:")
- tcp_client_socket.send(send_data.encode("gbk"))
- #? 接收对方发送过来的数据, 最大接收 1024 个字节
- recvData?=?tcp_client_socket.recv(1024)
- print('接收到的数据为:',?recvData.decode('gbk'))
- #? 关闭套接字
- tcp_client_socket.close()
- from?socket?import?*
- #? 创建 socket
- tcp_server_socket?=?socket(AF_INET,?SOCK_STREAM)
- #? 本地信息
- address?=?('',?7788)
- #? 绑定
- tcp_server_socket.bind(address)
- #? 使用 socket 创建的套接字
- tcp_server_socket.listen(128)
- #? 如果有新的客户端来链接服务器, 那么就产生一个新的套接字专门为这个客户端服务
- client_socket,?clientAddr?=?tcp_server_socket.accept()
- #? 接收对方发送过来的数据
- recv_data?=?client_socket.recv(1024)
- print('接收到的数据为:',?recv_data.decode('gbk'))
- #? 发送一些数据到客户端
- client_socket.send("thank?you?!".encode('gbk'))
- #? 关闭为这个客户端服务的套接字
- client_socket.close()
来源: http://www.bubuko.com/infodetail-2807862.html