python+soket实现UDP协议的客户/服务端中文聊天程序
没什么特别的东西,网上烂大街的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协议的客户/服务端中文聊天程序的更多相关文章
- python+soket实现 TCP 协议的客户/服务端中文(自动回复)聊天程序
[吐槽] 网上的代码害死人,看着都写的言之凿凿,可运行就是有问题. 有些爱好代码.喜欢收藏代码的朋友,看到别人的代码就粘贴复制过来.可是起码你也试试运行看啊大哥 [正文] 昨日修改运行了UDP协议的C ...
- python+soket实现UDP协议的局域网广播程序
# udp_gb_server.py '''服务端(UDP协议局域网广播)''' import socket s = socket.socket(socket.AF_INET, socket.SOCK ...
- UDP协议实现客户服务器数据交互
UDP协议实现客户服务器数据交互 按照往常一样将今天自己写的题目答案写在了博客上习题:客户端循环发送消息给服务端,服务端循环接收,并打印出来,直到收到Bye就退出程序. package network ...
- winsock 编程(简单客户&服务端通信实现)
winsock 编程(简单客户&服务端通信实现) 双向通信:Client send message to Server, and if Server receive the message, ...
- TCP协议下的服务端并发,GIL全局解释器锁,死锁,信号量,event事件,线程q
TCP协议下的服务端并发,GIL全局解释器锁,死锁,信号量,event事件,线程q 一.TCP协议下的服务端并发 ''' 将不同的功能尽量拆分成不同的函数,拆分出来的功能可以被多个地方使用 TCP服务 ...
- 【C#】教你纯手工用C#实现SSH协议作为GIT服务端
SSH(Secure Shell)是一种工作在应用层和传输层上的安全协议,能在非安全通道上建立安全通道.提供身份认证.密钥更新.数据校验.通道复用等功能,同时具有良好的可扩展性.本文从SSH的架构开始 ...
- CAS 5.1.x 的搭建和使用(四)—— 配置使用HTTP协议访问的服务端
CAS单点登录系列: CAS 5.1.x 的搭建和使用(一)—— 通过Overlay搭建服务端 CAS5.1.x 的搭建和使用(二)—— 通过Overlay搭建服务端-其它配置说明 CAS5.1.x ...
- PHP服务端如何通过程序将图上传到指定的图片服务器与图片服务器的优化方案
一:PHP服务端如何通过程序将图上传到指定的图片服务器与图片服务器的优化方案 (1) php服务器把图片处理成缩率图或指定大小的图片在通过PHP程序代码 操作FTP 上传到图片服务器. 二:图片服务器 ...
- Python中的UDP协议应用之飞秋应用-单IP版本
UDP协议是无连接的.不稳定的网络通信协议. 通过使用飞秋端口(2425),以及模拟飞秋消息格式实现使用UDP协议对飞秋进行通信. 飞秋通信格式: '1:1000:66:%s:32:%s' 以冒号分割 ...
随机推荐
- SQL SERVER Management Studio编写SQL时没有智能提示的解决方式
1. 检查设置里是否启用智能感知(Intellisence),可以在“工具”→“选项”里设置 2. 如果启用后还是无效,可以新建一个查询窗口查询,输入关键词的前面几个字母看是否有提示(或者使用Ctrl ...
- [控件] LiveChangedImageView
LiveChangedImageView 效果 说明 切换图片的时候自动根据图片的尺寸进行渐变式切换,效果很不错,使用非常容易. 源码 https://github.com/YouXianMing/U ...
- 通过runtime获取对象相关信息
通过runtime获取对象相关信息 在这里,本人给大家提供一个runtime关于NSObject的扩展,用来显示各种NSObject中的信息,这有助于你来分析类的组成:) 先准备以下类供测试: Mod ...
- sonarQube环境搭建--常见问题及解决
环境配置:MySQL Server 5.7 Jdk1.8 1.安装mysql数据库(默认安装一路默认到底,注意不要先新建用户账号) a) Mysql 环境变量配置: b)新增my.ini文件: ...
- IntelliJ IDEA2017/2018 激活方法 破解补丁激活(亲测可用)(注册码方法以和谐)
IntelliJ IDEA2017 激活方法(注册码方法以和谐): 搭建自己的授权服务器,对大佬来说也很简单,我作为菜鸟就不说了,网上有教程. 我主要说第二种,现在,直接写入注册码,是不能成功激活的( ...
- ZT 内地20年经典电视剧大全
内地20年经典电视剧大全 片尾曲:<故事就是故事> 演唱:戴娆 我听爷爷讲了一个故事 故事里的事是那昨天的事 故事里有好人也有坏人 故事里有好事也有坏事 故事里有多少是是非非 故事 ...
- spring-boot默认的application.properties属性
# =================================================================== # COMMON SPRING BOOT PROPERTIE ...
- 【错误记录】记录蛋疼的 mysql 错误
-- 应用信息表 DROP TABLE IF EXISTS `table_name`; CREATE TABLE `ks_apps_info` ( `id` ) NOT NULL COMMENT 'i ...
- 对于socket发送数据时是否要加锁及write read的阻塞非阻塞
偶尔讨论到了socket发送数据时是否应该加锁的问题,就在网上查了一下,下面是大神陈硕的答案 对于 UDP,多线程读写同一个 socket 不用加锁,不过更好的做法是每个线程有自己的 socket,避 ...
- HBase的常用Java API
1. 创建HBase表的对象 HBase表的对项名字叫HTable,创建它的方法有很多,常见的有如下: org.apache.hadoop.hbase.client.HTable hTable = n ...