python里使用socket实现时间服务器

来源:互联网 发布:百元电脑音箱推荐 知乎 编辑:程序博客网 时间:2024/06/05 16:01
创建一个TCP的服务器,是很简单的,特别这是一个时间服务器。学习过网络编程的人都知道,创建服务器就是先调用bind函数绑定,
接着调用listen函数来监听,就可以完成服务器的创建。

下面来创建一个时间服务器,绑定端口为8037:

# File: socket-example-2.pyimport socketimport struct, time# user-accessible portPORT = 8037# reference timeTIME1970 = 2208988800# establish serverservice = 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.pyimport socketimport struct, time# serverHOST = '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 servers = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect((HOST, PORT))# read 4 bytes, and convert to time valuet = s.recv(4)t = struct.unpack("!I", t)[0]t = int(t - TIME1970)s.close()# print resultsprint("server time is", time.ctime(t))print("local clock is", int(time.time()) - t, "seconds off")

Python游戏开发入门

http://edu.csdn.net/course/detail/5690

你也能动手修改C编译器

http://edu.csdn.net/course/detail/5582

纸牌游戏开发

http://edu.csdn.net/course/detail/5538 

五子棋游戏开发

http://edu.csdn.net/course/detail/5487
RPG游戏从入门到精通
http://edu.csdn.net/course/detail/5246
WiX安装工具的使用
http://edu.csdn.net/course/detail/5207
俄罗斯方块游戏开发
http://edu.csdn.net/course/detail/5110
boost库入门基础
http://edu.csdn.net/course/detail/5029
Arduino入门基础
http://edu.csdn.net/course/detail/4931
Unity5.x游戏基础入门
http://edu.csdn.net/course/detail/4810
TensorFlow API攻略
http://edu.csdn.net/course/detail/4495
TensorFlow入门基本教程
http://edu.csdn.net/course/detail/4369
C++标准模板库从入门到精通 
http://edu.csdn.net/course/detail/3324
跟老菜鸟学C++
http://edu.csdn.net/course/detail/2901
跟老菜鸟学python
http://edu.csdn.net/course/detail/2592
在VC2015里学会使用tinyxml库
http://edu.csdn.net/course/detail/2590
在Windows下SVN的版本管理与实战 
http://edu.csdn.net/course/detail/2579
Visual Studio 2015开发C++程序的基本使用 
http://edu.csdn.net/course/detail/2570
在VC2015里使用protobuf协议
http://edu.csdn.net/course/detail/2582
在VC2015里学会使用MySQL数据库
http://edu.csdn.net/course/detail/2672




原创粉丝点击