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

喜欢的点个赞❤吧!

目录
相关文章
|
13天前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
40 2
|
2月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
141 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
2月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
154 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
29天前
|
Kubernetes 网络协议 Python
Python网络编程:从Socket到Web应用
在信息时代,网络编程是软件开发的重要组成部分。Python作为多用途编程语言,提供了从Socket编程到Web应用开发的强大支持。本文将从基础的Socket编程入手,逐步深入到复杂的Web应用开发,涵盖Flask、Django等框架的应用,以及异步Web编程和微服务架构。通过本文,读者将全面了解Python在网络编程领域的应用。
25 1
|
2月前
|
消息中间件 监控 网络协议
Python中的Socket魔法:如何利用socket模块构建强大的网络通信
本文介绍了Python的`socket`模块,讲解了其基本概念、语法和使用方法。通过简单的TCP服务器和客户端示例,展示了如何创建、绑定、监听、接受连接及发送/接收数据。进一步探讨了多用户聊天室的实现,并介绍了非阻塞IO和多路复用技术以提高并发处理能力。最后,讨论了`socket`模块在现代网络编程中的应用及其与其他通信方式的关系。
104 3
|
2月前
|
安全 网络协议 网络安全
Python Socket编程大揭秘:从菜鸟到黑客的进阶之路,你准备好了吗?
【10月更文挑战第4天】在编程领域,Python Socket编程犹如一把开启网络世界的钥匙,带领开发者从简单数据传输迈向复杂应用构建。本文将引导你从零开始,逐步掌握Socket编程的核心技巧,包括基本概念、TCP服务器与客户端的搭建、并发处理及异常管理、SSL/TLS加密通信,直至深入了解网络协议与安全漏洞。通过实战演练与理论学习,助你成为驾驭网络世界的高手。
35 1
|
2月前
|
存储 网络协议 Linux
聊一聊 Python 的 socket,以及 select、poll、epoll 又是怎么一回事?
聊一聊 Python 的 socket,以及 select、poll、epoll 又是怎么一回事?
137 2
|
2月前
|
网络协议 测试技术 网络安全
Python编程-Socket网络编程
Python编程-Socket网络编程
|
5月前
|
网络协议 开发者 Python
深度探索Python Socket编程:从理论到实践,进阶篇带你领略网络编程的魅力!
【7月更文挑战第25天】在网络编程中, Python Socket编程因灵活性强而广受青睐。本文采用问答形式深入探讨其进阶技巧。**问题一**: Socket编程基于TCP/IP,通过创建Socket对象实现通信,支持客户端和服务器间的数据交换。**问题二**: 提升并发处理能力的方法包括多线程(适用于I/O密集型任务)、多进程(绕过GIL限制)和异步IO(asyncio)。**问题三**: 提供了一个使用asyncio库实现的异步Socket服务器示例,展示如何接收及响应客户端消息。通过这些内容,希望能激发读者对网络编程的兴趣并引导进一步探索。
58 4
|
5月前
|
开发者 Python
Python Socket编程:不只是基础,更有进阶秘籍,让你的网络应用飞起来!
【7月更文挑战第25天】在网络应用蓬勃发展的数字时代,Python凭借其简洁的语法和强大的库支持成为开发高效应用的首选。本文通过实时聊天室案例,介绍了Python Socket编程的基础与进阶技巧,包括服务器与客户端的建立、数据交换等基础篇内容,以及使用多线程和异步IO提升性能的进阶篇。基础示例展示了服务器端监听连接请求、接收转发消息,客户端连接服务器并收发消息的过程。进阶部分讨论了如何利用Python的`threading`模块和`asyncio`库来处理多客户端连接,提高应用的并发处理能力和响应速度。掌握这些技能,能使开发者在网络编程领域更加游刃有余,构建出高性能的应用程序。
34 3
下一篇
无影云桌面