网络编程---scoket--Udp例子
例子一、类似于QQ聊天(A和B聊天)
笔者写的
import socket sk = socket.socket(type = socket.SOCK_DGRAM) sk.bind(('127.0.0.1',8080)) #IP,端口 必须是在元组里 while Ture: msg,addr = sk.recvfrom(1024) print(msg.decode('utf-8')) info = input('>>>>') if info == 'q':break sk.sendto(info.encode('utf-8'),addr) sk.clock()
import socket sk = socket.socket(type=socket.SOCK_DGRAM) ip_post = ('127.0.0.1',8080) while True: info = input('Client1>>>>>') if info == 'q' or info =='Q':break sk.sendto(info.encode('utf-8'),ip_post) # sk.sendto(bytes('Client1 input :'+info,encoding='utf-8'),ip_post) # 等同于上句 msg,addr = sk.recvfrom(1024) print(msg.decode()) sk.close()
import socket sk = socket.socket(type=socket.SOCK_DGRAM) ip_post = ('127.0.0.1',8080) while True: info = input('Client2>>>>>') if info == 'q' or info =='Q':break sk.sendto(info.encode('utf-8'),ip_post) # sk.sendto(bytes('Client2 input :'+info,encoding='utf-8'),ip_post) # 等同于上句 msg,addr = sk.recvfrom(1024) print(msg.decode()) sk.close()
教学里的
import socket sk = socket.socket(type=socket.SOCK_DGRAM) sk.bind(('127.0.0.1',9090)) while True: msg,addr = sk.recvfrom(1024) print('来自[%s:%s]的消息--%s'%(addr[0],addr[1],msg.decode('utf-8'))) inp = input('>>>') sk.sendto(inp.encode('utf-8'),addr) sk.close()
import socket sk = socket.socket(type=socket.SOCK_DGRAM) addr = ('127.0.0.1',9090) while True: msg = input('>>>') sk.sendto(msg.encode('utf-8'),addr) msg_recv,addr = sk.recvfrom(1024) print(msg_recv.decode('utf-8')) sk.close()
例子二、时间格式,客户端输入格式、返回服务器时间和客户端的格式一样
笔者写的
# 时间同步 # 接收信息 时间格式 # 将我的时间转化成接收到的格式的 # 再发回给客户端 import time import socket sk = socket.socket(type=socket.SOCK_DGRAM) sk.bind(('127.0.0.1',8080)) while True: msg,addr = sk.recvfrom(1024) msg = msg.decode('utf-8') if '-' in msg: sk.sendto(bytes(time.strftime("%Y-%m-%d",time.localtime()),encoding='utf-8'),addr) elif ':' in msg: sk.sendto(bytes(time.strftime("%Y:%m:%d",time.localtime()),encoding='utf-8'),addr) elif '/' in msg: sk.sendto(bytes(time.strftime("%Y/%m/%d",time.localtime()),encoding='utf-8'),addr) else: sk.sendto(bytes(time.strftime("%Y-%m-%d",time.localtime()),encoding='utf-8'),addr) sk.close()
import socket sk =socket.socket(type=socket.SOCK_DGRAM) ip_post = ('127.0.0.1',8080) while True: t = input('时间格式:') sk.sendto(t.encode('utf-8'),ip_post) msg,addr = sk.recvfrom(1024) print(msg.decode('utf-8')) sk.close()
教学里的
# 需求 # 写一个时间同步的服务器 # 服务端接收请求 # 按照client端发送的时间格式,将服务器时间转换成对应格式 # 发送给客户端 import time import socket sk = socket.socket(type=socket.SOCK_DGRAM) sk.bind(('127.0.0.1',9000)) while True: msg,addr = sk.recvfrom(1024) # msg 客户端发送给server端的时间格式 "%Y-%m-%d %H:%M-%S" time_format = msg.decode('utf-8') time_str = time.strftime(time_format) sk.sendto(time_str.encode('utf-8'),addr) sk.close()
# client端每隔一段时间发送请求到服务端 # 发送时间的格式 import time import socket sk = socket.socket(type = socket.SOCK_DGRAM) sk.sendto('%Y-%m-%d %H:%M:%S'.encode('utf-8'),('127.0.0.1',9000)) msg,addr = sk.recvfrom(1024) print(msg.decode('utf-8')) sk.close() # 方式一 # 操作系统的定时任务 + python代码的形式 # 方式二 # while True + time.sleep的形式
浙公网安备 33010602011771号