python+soket实现UDP协议的客户/服务端中文聊天程序

简介: 没什么特别的东西,网上烂大街的C/S框架。(基于windows 7 + python 3.4)   为了实现中文聊天,我加入了一点修改: msg.encode('utf-8') # msg 为输入(且将要发送出)的信息 data.decode('utf-8') # data 为接收的信息 这样做的原因是 sendto 函数只能发送ASCII字符,不支持发送中文(在 python3 中,中文默认是unicode编码)。

 

没什么特别的东西,网上烂大街的C/S框架。(基于windows 7 + python 3.4)

 

为了实现中文聊天,我加入了一点修改:

msg.encode('utf-8') # msg 为输入(且将要发送出)的信息

data.decode('utf-8') # data 为接收的信息

这样做的原因是 sendto 函数只能发送ASCII字符,不支持发送中文(在 python3 中,中文默认是unicode编码)。

所以,信息在送出之前要编码,在接收到信息之后要解码

 

完整的两个文件如下:

#udp-server.py
'''服务器'''

from socket import *

host = ''  #服务器地址
port = 12345  #服务器端口
bufsiz = 2048 #缓存大小
adds = (host, port) #地址+端口

udpsersock = socket(AF_INET, SOCK_DGRAM)  #创建UDP的套接字类型。
udpsersock.bind(adds)  #绑定到地址和端口

while True:
    msg = input('服务器说:')    #输入数据
    data, addc = udpsersock.recvfrom(bufsiz)
    udpsersock.sendto(msg.encode('utf-8'), addc)
    
    if not data: break
    print('客户端回答:', data.decode('utf-8'))
    
udpsersock.close()

 

#udp-client.py
'''客户端'''

from socket import *

host = 'localhost'  #本地服务器地址
port = 12345  #客户端端口(确保和服务器的端口一致
bufsiz = 2048 #缓存大小
addc = (host, port) #地址+端口

udpclisock = socket(AF_INET, SOCK_DGRAM)  #创建UDP的套接字类型。

while True:
    msg = input('客户端说:')    #输入数据
    udpclisock.sendto(msg.encode('utf-8'), addc)
    data, adds = udpclisock.recvfrom(bufsiz)
    
    if not data: break
    print('服务器回答:', data.decode('utf-8'))
    
udpclisock.close()

 

 

运行结果如图:

 

(吐槽:python的input怎么按回车键没用啊,只能Ctrl + D + Enter。  大侠救我!!!)

 

目录
相关文章
python+soket实现UDP协议的局域网广播程序
1 # udp_gb_server.py 2 '''服务端(UDP协议局域网广播)''' 3 4 import socket 5 6 s = socket.socket(socket.
956 0
|
10天前
|
设计模式 开发者 Python
Python编程中的设计模式:工厂方法模式###
本文深入浅出地探讨了Python编程中的一种重要设计模式——工厂方法模式。通过具体案例和代码示例,我们将了解工厂方法模式的定义、应用场景、实现步骤以及其优势与潜在缺点。无论你是Python新手还是有经验的开发者,都能从本文中获得关于如何在实际项目中有效应用工厂方法模式的启发。 ###
|
1天前
|
Python
不容错过!Python中图的精妙表示与高效遍历策略,提升你的编程艺术感
本文介绍了Python中图的表示方法及遍历策略。图可通过邻接表或邻接矩阵表示,前者节省空间适合稀疏图,后者便于检查连接但占用更多空间。文章详细展示了邻接表和邻接矩阵的实现,并讲解了深度优先搜索(DFS)和广度优先搜索(BFS)的遍历方法,帮助读者掌握图的基本操作和应用技巧。
13 4
|
1天前
|
设计模式 程序员 数据处理
编程之旅:探索Python中的装饰器
【10月更文挑战第34天】在编程的海洋中,Python这艘航船以其简洁优雅著称。其中,装饰器作为一项高级特性,如同船上的风帆,让代码更加灵活和强大。本文将带你领略装饰器的奥秘,从基础概念到实际应用,一起感受编程之美。
|
3天前
|
存储 人工智能 数据挖掘
从零起步,揭秘Python编程如何带你从新手村迈向高手殿堂
【10月更文挑战第32天】Python,诞生于1991年的高级编程语言,以其简洁明了的语法成为众多程序员的入门首选。从基础的变量类型、控制流到列表、字典等数据结构,再到函数定义与调用及面向对象编程,Python提供了丰富的功能和强大的库支持,适用于Web开发、数据分析、人工智能等多个领域。学习Python不仅是掌握一门语言,更是加入一个充满活力的技术社区,开启探索未知世界的旅程。
13 5
|
1天前
|
机器学习/深度学习 JSON API
Python编程实战:构建一个简单的天气预报应用
Python编程实战:构建一个简单的天气预报应用
10 1
下一篇
无影云桌面