为了账号安全,请及时绑定邮箱和手机立即绑定

python socket心跳检测多少秒?

/ 猿问

python socket心跳检测多少秒?

忽然笑 2018-12-10 20:09:12

python socket心跳检测多少秒


查看完整描述

1 回答

?
一只甜甜圈

socket通信原理

Server端建立一个socket,然后绑定到一个(IP,port)对里,然后开启监听,准备好接收来自客户端(另一方)的请求。其中和客户端通信的方法有send(), sendall(), accept(), recv()等。

Client端建立socket,进行对服务器的连接,(可选的设置阻塞(同异步)方式等),连接上服务器后,进行数据的交互,sendall(), recv()等。**注意:!服务端和客户端(socket两端)都有数据的“收”,“发”方法。

json的处理:将数据转化为json格式(包装):json.dumps(data), 返回一个封装后的数据,然后发送给另一端,另一端再进行解析(data接收(recv())后,进行加载(json.loads(data))), 这样就可以按照字典的格式进行读取,data_loaded['ip']等

最后:连接关闭。socket的开启会占用带宽,必须记得关闭。

以下是“心跳”程序的服务端(监听心跳)代码:

12345678910111213141516171819202122232425262728293031323334353637383940#!/usr/bin/python#encoding:utf-8'''server'''import socket, sys, jsonfrom thread import *BUF_SIZE = 4096HOST = socket.gethostname()PORT = 7878try:    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)except socket.error, e:    print "Error creating socket: %s" %e    sys.exit()try:    server.bind((HOST, PORT))except socket.error:    print "Bind failed!"    sys.exit()print "Socket bind complete"server.listen(10)print "Socket now listening"def clientthread(coon):    coon.send("Welcome to the server!")    while True:        try:            data = coon.recv(BUF_SIZE)            data_loaded = json.loads(data)            print "ip: "+str(data_loaded['ip'])+" |status: "+data_loaded['status']+" |pid: "+str(data_loaded['pid'])            # coon.sendall("hello, I love you!")    # set the client :setblock(0)is ok!        except socket.error:            print "One Client (IP: %s) Connected over!" % data_loaded['ip']            break    coon.close()while True:    coon, addr = server.accept()    print "Connected with %s: %s " % (addr[0], str(addr[1]))    start_new_thread(clientthread, (coon,))server.close()



查看完整回答
反对 回复 2019-01-10
  • 1 回答
  • 0 关注
  • 792 浏览
我要回答

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信