跳至主要內容

TCP编程

刘春龙原创...大约 1 分钟Python教程文档

TCP 接收数据

【示例】 接收数据(服务端)

from socket import *
server_socket = socket(AF_INET, SOCK_STREAM)  # 建立TCP套接字
server_socket.bind(("127.0.0.1", 8889))
server_socket.listen(5)
print("等待接收连接")
client_socket, client_info = server_socket.accept()
recv_data = client_socket.recv(1024)
print(f"收到信息:{recv_data.decode('gbk')},来自:{client_info }")
client_socket.close()
server_socket.close()

【示例】 接收数据(客户端)

from socket import *
client_socket = socket(AF_INET, SOCK_STREAM)  # 建立TCP套接字
client_socket.connect(("127.0.0.1", 8889))
client_socket.send("hello".encode("gbk"))
client_socket.close()

服务端和客户端持续通信

【示例】 服务端

from socket import *
server_socket = socket(AF_INET, SOCK_STREAM)  # 建立TCP套接字
server_socket.bind(("127.0.0.1", 8889))
server_socket.listen(5)
print("等待接收连接")
client_socket, client_info = server_socket.accept()
print("一个客户端连接成功")
while True:
    recv_data = client_socket.recv(1024)
    print(f"客户端说:{recv_data.decode('gbk')},来自:{client_info }")
    if recv_data == "end":
        break
    msg = input("请输入:")
    client_socket.send(msg.encode('gbk'))
client_socket.close()
server_socket.close()

【示例】 客户端

from socket import *
client_socket = socket(AF_INET, SOCK_STREAM)  # 建立TCP套接字
client_socket.connect(("127.0.0.1", 8889))
while True:
    msg = input("请输入:")
    client_socket.send(msg.encode('gbk'))
    if msg == "end":
        break
    recv_data = client_socket.recv(1024)
    print(f"服务器端说:{recv_data.decode('gbk')}")
client_socket.close()

结合多线程实现自由通信

【示例】 服务端

from socket import *
from threading import Thread


def recv_data():
    while True:
        recv_data = client_socket.recv(1024)
        print(f"客户端说:{recv_data.decode('gbk')},来自:{client_info }")
        if recv_data == "end":
            break
def send_data():
    while True:
        msg = input("请输入:")
        client_socket.send(msg.encode('gbk'))
if __name__ == "__main__":
    server_socket = socket(AF_INET, SOCK_STREAM)  # 建立TCP套接字
    server_socket.bind(("127.0.0.1", 8889))
    server_socket.listen(5)
    print("等待接收连接")
    client_socket, client_info = server_socket.accept()
    print("一个客户端连接成功")
    t1 = Thread(target=recv_data)
    t2 = Thread(target=send_data)
    t1.start()
    t2.start()
    t1.join()
    t2.join()
    client_socket.close()
    server_socket.close()

【示例】 客户端

from socket import *
from threading import Thread
def recv_data():
    while True:
        recv_data = client_socket.recv(1024)
        print(f"服务器端说:{recv_data.decode('gbk')}")
def send_data():
    while True:
        msg = input("请输入:")
        client_socket.send(msg.encode('gbk'))
        if msg == "end":
            break
if __name__ == "__main__":
    client_socket = socket(AF_INET, SOCK_STREAM)  # 建立TCP套接字
    client_socket.connect(("127.0.0.1", 8889))
    t1 = Thread(target=recv_data)
    t2 = Thread(target=send_data)
    t1.start()
    t2.start()
    t1.join()
    t2.join()
    client_socket.close()
上次编辑于:
贡献者: 刘春龙
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.7