Python网络编程基础笔记-时间服务器
1.使用UDP实现时间服务器
# -*- coding: cp936 -*-
"""
UDP实现的时间服务器
1.接受来自客户端的任何请求。
2.获得本服务器的时间,并将这个时间以字符串的方式返回给客户端
"""
import socket,sys,struct,time
host = ""
port = 51423
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
s.bind((host,port))
while 1:
message,address = s.recvfrom(8192)
secs = int(time.time())
secs += 2208988800
reply = struct.pack("!I",secs)
s.sendto(reply,address)
2.使用UDP实现来获取时间服务器返回的时间
# -*- coding: cp936 -*-
"""
UDP使用方法:
1.创建socket
2.发送或接收数据,它不需要connect
"""
import socket,sys,struct,time
host = "localhost"
port = 51423
host = socket.gethostbyname(host)
# 1.使用SOCK_DGRAM,而不是SOCK_STREAM
s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# 3.使用sendto发送数据
s.sendto("",(host,port))
# 2.不使用connect方法
# 4.使用recvfrom接收数据
buf = s.recvfrom(2048)[0]
if len(buf) != 4:
print "wrong-sized reply %d:%s" % (len(buf),buf)
sys.exit(1)
secs = struct.unpack("!I",buf)[0]
secs -= 2208988800
print time.ctime(int(secs))