python写基于c/s框架的即时聊天——(一)基于udp的半双工通信

c/s框架是目前采用的最多的通信方式,客户端/服务器 框架。基础课程已经学会使用java进行了即时聊天功能,那么使用python又该怎么建立呢,这里首先介绍基于udp协议的半双工通信。udp是无连接的传输协议。
直接上代码。
首先是服务器端:

from socket import *
from time import ctime
 
host = '' 	#默认监听所有访问本机服务器的ip主机
port = 12345	 #接受访问的本机端口号
bufsize = 1024  	#缓冲区,用于存放收到的数据
addr = (host,port) 
 
udpServer = socket(AF_INET,SOCK_DGRAM)	 #建立服务器
udpServer.bind(addr) 	#开始监听
 
while True:
    print('等待连接……')
    data,addr = udpServer.recvfrom(bufsize) 	 #接收数据和返回地址
    #处理数据
    data  = data.decode(encoding='utf-8').upper()
    data = "at %s :%s"%(ctime(),data)
    udpServer.sendto(data.encode(encoding='utf-8'),addr)
    #发送数据
    print('收到',data,'来自',addr)
 
udpServer.close()

客户端

from socket import *
 
host  = '192.168.206.1' 	# 服务器的ip
port = 12345 	#接口选择大于10000
bufsize = 1024  	#定义缓冲
 
addr = (host,port) 
udpClient = socket(AF_INET,SOCK_DGRAM)	 #创建socket客户端
 
while True:
    data = input('>>>请输入信息: ')
    if not data:
        break
    data = data.encode(encoding="utf-8") 
    udpClient.sendto(data,addr) 	# 发送数据
    data,addr = udpClient.recvfrom(bufsize) 	#成功发送至服务器端后,接收服务器发送的返回数据和返回地址
    print(data,'from',addr)
 
udpClient.close()

当使用两台或多台电脑进行即时聊天时,可以通过统一局域网ip或者公网ip进行ping 测试。

你可能感兴趣的:(python基础学习)