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、服务器端先发送消息,客户端收到消息后,再发送消息给服务器端。(程序怎么写,谁先发送消息)

原文地址:https://www.cnblogs.com/lilyxiaoyy/p/12002082.html