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()

服务器窗口截图:
在这里插入图片描述
客户端窗口截图:
“服务器已收到消息”是服务器传来的!
在这里插入图片描述
喜欢的点个赞❤吧!

  • 7
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

挣扎的蓝藻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值