欢迎加入QQ讨论群258996829
麦子学院 头像
苹果6袋
6
麦子学院

Python学习之使用socket实现时间服务器方法详解

发布时间:2017-09-05 20:53  回复:0  查看:1904   最后回复:2017-09-05 20:53  
本文和大家分享的主要是python 中使用socket实现时间服务器相关内容,一起来看看吧,希望对大家 学习python有所帮助。
  创建一个TCP 的服务器,是很简单的,特别这是一个时间服务器。学习过网络编程的人都知道,创建服务器就是先调用 bind 函数绑定,
  接着调用listen 函数来监听,就可以完成服务器的创建。
  下面来创建一个时间服务器,绑定端口为8037
  # File: socket-example-2.py
  import  socket
  import struct,  time
  # user-accessible port
  PORT = 8037
  # reference time
  TIME1970 = 2208988800
  # establish server
  service =  socket. socket( socket.AF_INET,  socket.SOCK_STREAM)
  service.bind(("", PORT))
  service.listen(1)
  print("listening on port", PORT)
   while True:    # serve forever
  channel,  info = service.accept()
  print("connection from",  info)
  t = int( time. time()) + TIME1970
  t = struct.pack("!I", t)
  channel.send(t) # send timestamp
  channel. close() # disconnect
  结果输出如下:
  listening on port 8037
  connection from ('127.0.0.1', 52125)
  在这个程序里,listen 监听一个连接,后面使用无限循环调用 accept 函数来接收连接进来,然后创建 channel 的连接, info 保存连接信息。后面把当前系统发送回去。
  用来测试这个服务器,可以使用下面的程序:
  # File: socket-example-1.py
  import  socket
  import struct,  time
  # server
  HOST = '127.0.0.1'#"time.nist.gov"
  PORT = 8037
  # reference time (in seconds since 1900-01-01 00:00:00)
  TIME1970 = 2208988800 # 1970-01-01 00:00:00
  # connect to server
  s =  socket. socket( socket.AF_INET,  socket.SOCK_STREAM)
  s.connect((HOST, PORT))
  # read 4 bytes, and convert to time value
  t = s.recv(4)
  t = struct.unpack("!I", t)[0]
  t = int(t - TIME1970)
  s. close()
  # print results
  print("server time is",  time.ctime(t))
  print("local clock is", int( time. time()) - t, "seconds off")
来源: 大坡3D 软件开发
您还未登录,请先登录

热门帖子

最新帖子