TCP协议通过三次握手协议将客户端与服务器端连接,两端使用各自的Socket对象。Socket对象中包含了IO流,供数据传输。
类似于我们生活中的打电话
举例:上网 --> 满足http协议(使用的还是tcp的还一套,因为http是tcp的子协议)
tcp的连接过程:3次握手
客户端服务端
a:哥们,你能听见我说话吗?
b:我能,你能听见我说话吗?
a:我也能,那我们开始说话吧
开始进行数据传输的过程(客和服之间来来回回)
断开连接的过程:第4次挥手
整理:
核心对象:socket对象
tcp_cilent.py
import socket ''' 实现tcp程序的客户端的编程 核心:得到socket对象 在创建对象的过程中,需要传入两个参数 第一个参数:满足的是ipv4的规则(socket.AF_INET) 第二个参数:判断/确定到底是满足tcp协议还是udp协议的规则编程(socket.SOCK_STREAM) 面向连接的编程: ''' #得到客户端的socket对象 tcp_cilent_socket=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #定义服务器的ip和端口号(封装到一个元组对象中) tcp_server = ('10.11.63.132',8888) #连接服务器 tcp_cilent_socket.connect(tcp_server) #循环发送和接受数据 while 1: #客户端从键盘输入数据(字符串) data = input('>>>:') #将客户端的数据发送给服务器,我们在这个过程中需要对数据进行编码操作(有一定的安全性保障) tcp_cilent_socket.send(data.encode('utf-8')) #接受服务器给客户端传递(发送)过来的数据并且进行解码操作 recv_data = tcp_cilent_socket.recv(1024) print('服务器:' + recv_data.decode('gbk')) #关闭套接字对象 tcp_cilent_socket.close()
tcp_server.py
import socket ''' 实现tcp程序的客户端的编程 核心:得到socket对象 在创建对象的过程中,需要传入两个参数 第一个参数:满足的是ipv4的规则(socket.AF_INET) 第二个参数:判断/确定到底是满足tcp协议还是udp协议的规则编程(socket.SOCK_STREAM) 面向连接的编程: ''' #得到服务端的socket对象 tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) #绑定服务端的ip和端口号(元祖) tcp_server = ('10.11.63.132',8888) tcp_server_socket.bind(tcp_server) #开启监听 tcp_server_socket.listen() #接受客户端的访问 new_socket,cilent_info = tcp_server_socket.accept() # print(new_socket) # print(cilent_info) #循环接受和发送数据 while 1: #接受客户端发来的数据 recv_date = new_socket.recv(1024) print('客户端:' + recv_date.decode('utf-8')) #给客户端发送数据 data = input('>>>:') new_socket.send(data.encode('gbk')) #关闭两个套接字对象 new_socket.close() tcp_server_socket.close()