Python 技术篇-socket套接字实现两个窗口间消息传递实例演示,TCP实现

简介: Python 技术篇-socket套接字实现两个窗口间消息传递实例演示,TCP实现

   

上一篇Python 技术篇-socket 套接字实现服务器客户端消息传递,UDP 实现

本篇介绍用 TCP 来实现。

socket 实现客户端服务器的消息传递有 TCPUDP 两种方式。

TCP 可以实现客户端和服务器相互传递消息,UDP 只能由服务器向客户端传递消息

创建一个 TCP 连接的 socket 对象

socket(),没有参数就代表 TCP 连接。

下面这段是等待客户端连接连接成功后返回新的连接 conn,这就是与客户端的连接,后续相互发消息用的就是这个。客户端用 Socket_TCP.connect(addr) 与服务器连接。

Socket_TCP.listen(10)   # 监听
conn, addr = Socket_TCP.accept()   # 阻塞式连接

TCP 接受消息:recv()

TCP 发送消息:send()sendall(),后面的是完整的消息。

传送消息时需要 bytes 类型的消息,下面两行用于格式的相互转化:

bytes('要转化的消息', encoding='utf-8')

str('要转化的消息', encoding='utf-8')

服务器代码:

from socket import *
host = ""   # ip,服务器空ip代表本地
port = 7777   # 端口号
addr = (host, port)
Socket_TCP = socket()   # 创建套接字
Socket_TCP.bind(addr)   # 服务器用bind绑定本地,也算是服务器的标识
print("Waitting...")
Socket_TCP.listen(10)
conn, addr = Socket_TCP.accept()
while True:
    data = conn.recv(1000)   # 1000是参数缓冲区大小
    data = str(data, encoding = 'utf-8')   # 将接收的字节类型数据转化为字符串类型
    print("来自" + str(addr)+"发来的消息: " + data)
    conn.send(bytes("服务器已收到消息!\n",encoding = 'utf-8'))  # 像客户端发送消息
    if data == "exit":
        break
conn.close()   # 关闭客户端的连接
Socket_TCP.close()   # 关闭套接字

客户端代码:

from socket import *
host = "127.0.0.1"   # 服务器的地址,因为服务器也在本地,所以填本地地址了
port = 7777   # 端口号要与服务器一致
addr = (host, port)
Socket_TCP = socket()
Socket_TCP.connect(addr)
while True:
    data = input("向服务器发送消息: ")
    data = bytes(data, encoding = 'utf-8') # 因为input返回的是字符串类型的数据,data需要字节类型的数据
    Socket_TCP.sendall(data)
    print(str(Socket_TCP.recv(1000),encoding = 'utf-8'))# 打印从服务器传来的消息
    if data == "exit":
        break
Socket_TCP.close()

服务器窗口截图:

image.png

客户端窗口截图:

“服务器已收到消息”是服务器传来的!

image.png

喜欢的点个赞❤吧!

目录
相关文章
|
11天前
|
Java
[Java]Socket套接字(网络编程入门)
本文介绍了基于Java Socket实现的一对一和多对多聊天模式。一对一模式通过Server和Client类实现简单的消息收发;多对多模式则通过Server类维护客户端集合,并使用多线程实现实时消息广播。文章旨在帮助读者理解Socket的基本原理和应用。
13 1
|
24天前
|
网络协议 机器人 C++
KUKA机器人Socket通讯配置方法:技术干货分享
【10月更文挑战第7天】在现代自动化生产线上,KUKA机器人凭借其高效、灵活和精确的特点,成为众多企业的首选。为了实现KUKA机器人与其他设备或系统之间的数据交互,Socket通讯配置显得尤为重要。本文将详细介绍KUKA机器人Socket通讯的配置方法,帮助大家在工作中更好地掌握这一技术。
137 2
|
2天前
|
测试技术 API 数据安全/隐私保护
Python连接到Jira实例、登录、查询、修改和创建bug
通过使用Python和Jira的REST API,可以方便地连接到Jira实例并进行各种操作,包括查询、修改和创建Bug。`jira`库提供了简洁的接口,使得这些操作变得简单易行。无论是自动化测试还是开发工作流的集成,这些方法都可以极大地提高效率和准确性。希望通过本文的介绍,您能够更好地理解和应用这些技术。
8 0
|
27天前
|
Python
Python中的push方法详解与实例
Python中的push方法详解与实例
|
1月前
|
Python
Python 练习实例100
Python 练习实例100
|
1月前
|
数据处理 Python
Python内置时间模块:Datetime实例详解(一)
Python内置时间模块:Datetime实例详解(一)
|
1月前
|
Python
Python 练习实例99
Python 练习实例99
|
1月前
|
网络协议 Linux 网络性能优化
Linux基础-socket详解、TCP/UDP
综上所述,Linux下的Socket编程是网络通信的重要组成部分,通过灵活运用TCP和UDP协议,开发者能够构建出满足不同需求的网络应用程序。掌握这些基础知识,是进行更复杂网络编程任务的基石。
78 1
|
28天前
|
数据可视化 Python
Python绘制基频曲线——实例解析与应用探讨
Python绘制基频曲线——实例解析与应用探讨
|
28天前
|
Python 容器
AutoDL Python实现 自动续签 防止实例过期释放 小脚本 定时任务 apscheduler requests
AutoDL Python实现 自动续签 防止实例过期释放 小脚本 定时任务 apscheduler requests
23 0