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。  大侠救我!!!)

 

时间: 2024-10-15 03:45:50

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

python+soket实现 TCP 协议的客户/服务端中文(自动回复)聊天程序

  [吐槽] 网上的代码害死人,看着都写的言之凿凿,可运行就是有问题. 有些爱好代码.喜欢收藏代码的朋友,看到别人的代码就粘贴复制过来.可是起码你也试试运行看啊大哥   [正文] 昨日修改运行了UDP协议的C/S聊天程序,可是TCP协议的怎么都不行.各种试,各种坑. 做了下面几个修改后,终于可以了: 1.对发送.接收的信息,分别进行编码和解码 2.客户端的第13行bind改为connect(这真是个大坑!!) (本文基于windows 7 + python 3.4)   完整代码如下(人头担保,

python环境下udp协议怎么发送换行符

问题描述 python环境下udp协议怎么发送换行符 ra='%s' % local_name+'n'+'%s' % local_ip+'n'+'%s' % current_time+'n'+'%s' % msgID print ra s.sendto(ra,(host,port)) 这是代码 ('Received:', 'ubuntun127.0.1.1n2015-12-15 23:59:03n20151215235903') 这是结果... 同样的方式TCP挺好.... 解决方案 n就是换行

用python的suds访问web service (soap) 服务端是php写的

问题描述 用python的suds访问web service (soap) 服务端是php写的 想让一个系统可以获取另一个系统的数据. 客户端系统是python写的,服务端是用php. python端访问 import suds url = 'http://www.xxxx.cn/soap/Service.php?wsdl' client = suds.client.Client(url) result = client.service.afunction(param1,param2) php服

视频-C# UDP必须要有服务端和客户端吗?

问题描述 C# UDP必须要有服务端和客户端吗? 我要写一个实时视频通信的程序,要求只有一个exe,复制到俩电脑上就可以直接用,实现视频相互传输.我搜了一些网上UDP的例子,都是分为客户端和服务器两部分写的.能不能不区分这两个呢? 另外有木有有程序的大侠分享下啊,UDP传输视频数据我也不会的说...万分感谢!! 解决方案 那你的程序等于把服务端和客户端都绑定在一个小程序.其中服务器部分侦听接收数据,客户端部分负责发送数据. 解决方案二: udp不区分服务端客户端的啊, 问题是你任何一端的程序全不

Python警察与小偷的实现之一客户端与服务端通信实例_python

本文实例讲述了Python警察与小偷的实现之一客户端与服务端通信,分享给大家供大家参考.具体方法分析如下: 该实例来源于ISCC 2012 破解关第四题 目的是通过逆向police,实现一个thief,能够与police进行通信 实际上就是一个RSA加密通信的例子,我们通过自己编写客户端和服务端来实现上面的thief和police的功能. 要通信,这们这次先通过python写出可以进行网络连接的客户端与服务端. 服务端代码如下: #!/usr/bin/env python import Sock

python实现的udp协议Server和Client代码实例_python

直接上代码:Server端: 复制代码 代码如下:  #!/usr/bin/env python # UDP Echo Server -  udpserver.py import socket, traceback  host = '' port = 54321  s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.bind((

网络编程,要有客户端和服务端,在线等高人

问题描述 举例子来说,就是一个有客户端和服务端的聊天软件,能够对指定IP地址发送消息并得到回馈,用JAVA语言实现 解决方案 解决方案二:我有个现成的聊天室你要不要?

Erbix:兼容于 CommonJS 的服务端 JavaScript 主机平台

Erbix 为构建和部署 JavaScript 应用程序的云端平台.除了支持 RinjoJS,CommonJS 模块,PostgreSQL 外,还支持具可伸缩性的按需调配主机. Erbix is a platform for building and deploying JavaScript applications on the Cloud. It features support for RinjoJS,CommonJS modules, PostgreSQL and on-demand s

tcp协议 udp协议-C#服务端请求客户端数据

问题描述 C#服务端请求客户端数据 我想在客户端安装一个服务后,能够向客户端请求数据,返回数据给服务器,这样用什么协议要好,socket行吗?服务端怎么发起这个请求,麻烦各位大神帮帮忙? 我不清楚的地方,如果用socket,保存客户端连接后,我要请求客户端数据,只能是客户端请求服务端,而我换成服务端请求客户端好像只能是客户端请求后服务端回复. 如果是UDP的话好定义请求和回复问题吗? 解决方案 ok,既然是.net,就有.net的最佳做法,wcf双工通讯或signalr.我在论坛都分享过例子.