python学习day31 网络编程2 UPD协议 黏包问题

http://www.cnblogs.com/Eva-J/articles/8244551.html#_label4

upd

 服务端:

import socket

sk = socket.socket(type=socket.SOCK_DGRAM)  # 建立一个socket对象,
# 指定以UDP协议的形式来连接
sk.bind(('127.0.0.1',8080))
# 指定服务的地址

msg, addr = sk.recvfrom(1024) # 接收消息,发送端的地址
print(msg, addr)
sk.sendto(b'HELLO', addr)   # 给发送端回复消息 还要把对方地址发过去

sk.close()  # 关闭socket连接

客户端:

import socket

sk = socket.socket(type=socket.SOCK_DGRAM)

ip_port = ('127.0.0.1',8080)
sk.sendto(b'hello', ip_port)   # 直接给服务器发送一段消息
msg, addr = sk.recvfrom(1024)   # 接收对面的回信 也会收到地址
print(msg)

sk.close()

 

例子:

1. 

需求
写一个时间同步的服务器
服务端接收请求
按照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()

客户端:发送时间格式

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()

 

黏包

http://www.cnblogs.com/Eva-J/articles/8244551.html#_label5

 注意:只有TCP有粘包现象,UDP永远不会粘包

 

posted @ 2019-01-05 21:35  xyfun72  阅读(152)  评论(0编辑  收藏  举报