Python基础-TCP编程

来源:互联网 发布:js放大镜效果代码 编辑:程序博客网 时间:2024/06/06 19:49

效果图

打开两个命令行窗口,一个运行服务器程序,另一个运行客户端程序,就可以看到效果了
这里写图片描述

服务端

#!/usr/bin/env python3# -*- coding: utf-8 -*-# Python基础 TCP 编程import socketimport threadingimport timedef tcplink(sock, addr):    print('接收到一个连接 %s:%s...' % addr)    sock.send(b'Welcome!')    while True:        data = sock.recv(1024)        time.sleep(1)        if not data or data.decode('utf-8') == 'exit':            break        print("接收到客户端的数据, %s!" % data.decode('utf-8').encode('utf-8'))        sock.send(('数据原路返回 %s!' % data.decode('utf-8')).encode('utf-8'))    sock.close()    print('客户端 %s:%s 关闭.' % addr)# 创建套接字s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 监听端口:127.0.0.1绑定到本机地址# 请注意,小于1024的端口号必须要有管理员权限才能绑定s.bind(('127.0.0.1', 9999))# 等待连接的最大数量 5s.listen(5)print('等待连接...')while True:    # 接受一个新连接:    sock, addr = s.accept()    # 创建新线程来处理TCP连接:    t = threading.Thread(target = tcplink, args=(sock, addr))    t.start()

运行结果

===================== RESTART: D:\PythonProject\main.py =====================等待连接...接收到一个连接 127.0.0.1:59595...接收到客户端的数据, b'WangLin'!接收到客户端的数据, b'Beijing'!接收到客户端的数据, b'Hongwei'!客户端 127.0.0.1:59595 关闭.

客户端

#!/usr/bin/env python3# -*- coding: utf-8 -*-# Python基础 TCP 编程import socket# 客户端s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 建立连接:s.connect(('127.0.0.1', 9999))# 接收欢迎消息:print(s.recv(1024).decode('utf-8'))for data in [b'WangLin', b'Beijing', b'Hongwei']:    # 发送数据:    s.send(data)    print(s.recv(1024).decode('utf-8'))s.send(b'exit')print("发送exit指令关闭服务端")s.close()

运行结果

==================== RESTART: D:\PythonProject\client.py ====================Welcome!数据原路返回 WangLin!数据原路返回 Beijing!数据原路返回 Hongwei!发送exit指令关闭服务端