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

喜欢的点个赞❤吧!

目录
相关文章
|
14天前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
14天前
|
程序员 开发者 Python
Python网络编程基础(Socket编程) 错误处理和异常处理的最佳实践
【4月更文挑战第11天】在网络编程中,错误处理和异常管理不仅是为了程序的健壮性,也是为了提供清晰的用户反馈以及优雅的故障恢复。在前面的章节中,我们讨论了如何使用`try-except`语句来处理网络错误。现在,我们将深入探讨错误处理和异常处理的最佳实践。
|
1月前
|
监控 安全 Unix
UNIX域套接字(Unix Domain Socket)在安全性和隐私性
UNIX域套接字(Unix Domain Socket)在安全性和隐私性
46 2
|
1月前
|
网络协议 安全 Unix
UNIX域套接字(Unix Domain Socket,UDS)之所以高效
UNIX域套接字(Unix Domain Socket,UDS)之所以高效
40 3
|
1月前
套接字(socket)的端点表示
套接字(socket)的端点表示
22 8
|
2月前
|
网络协议 Java Unix
套接字(Socket)
套接字(Socket)
22 3
|
2月前
|
网络协议 安全 开发者
Python 中的 Socket 编程
Python 中的 Socket 编程
44 4
|
2月前
|
网络协议 网络性能优化 Python
在Python中进行TCP/IP网络编程
在Python中进行TCP/IP网络编程
34 6
|
1天前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
|
6天前
|
网络协议 Linux Windows
TCP/IP、Http、Socket之间的区别
TCP/IP、Http、Socket之间的区别