python3 最简单的网络编程tcp(socket数据流)
TCP 基于连接的、 是连续的、 可靠的、 效率⽐较低、 更像是打电话, 聊天的过程中不能中断。
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议
服务器端
# tcp_server.py import socket sk = socket.socket() # 创建socket对象 sk.bind(("127.0.0.1", 9998)) # 绑定IP和端口 sk.listen() # 开启监听 conn, address = sk.accept() # 等待客户端连接 阻塞 while 1: # 让服务端和客户端循环通信 send_msg = input(">>>:").strip() # 要发送的消息 conn.send(send_msg.encode("utf-8")) # 发送消息给客户端 if send_msg.upper() == "BYE": # 如果发送的消息是BYE就退出循环 break recv_msg = conn.recv(1024) # 接收来自客户端的消息 print("来自客户端的消息:", recv_msg.decode("utf-8")) if recv_msg.decode("utf-8").upper() == "BYE": # 如果来自客户端的消息是BYE就退出循环 break conn.close() # 关闭conn连接 sk.close() # 关闭sk连接
socket套接字 port|IP|mac|数据,所以叫套接字
tcp服务端
1、导入socket模块
2、创建socket对象
3、绑定IP和端口
4、开启监听
5、等待客户端连接,阻塞
6、发送消息给客户端,阻塞
7、接收来自客户端的消息
8、关闭conn连接
9、关闭socket连接
客户端
# tcp_client.py import socket sk = socket.socket() # 创建socket对象 sk.connect(("127.0.0.1", 9998)) # 连接服务端 while 1: # 服务端和客户端循环通讯 recv_msg = sk.recv(1024) # 接收来自服务端的消息 print("来自服务端的消息:", recv_msg.decode("utf-8")) if recv_msg.decode("utf-8").upper() == "BYE": # 如果来自服务端的消息是BYE就直接退出循环 break send_msg = input(">>>:").strip() # 要发送给服务端的消息 sk.send(send_msg.encode("utf-8")) # 发送消息给服务端 if send_msg.upper() == "BYE": # 如果发送的消息是BYE就直接退出循环 break sk.close() # 关闭sk连接
tcp客户端:
1、导入socket模块
2、创建socket对象
3、建立socket连接
4、接收来自于服务端的消息
5、发送消息给客户端
6、关闭socket连接
注意:
1、先启动服务器端程序,再启动客户端程序。
2、服务器端先发送消息,客户端收到消息后,再发送消息给服务器端。(程序怎么写,谁先发送消息)