Python - 计算服务器接收客户端请求的次数?

时间:2017-01-02 04:09:19

标签: python python-2.7 python-3.x

我最近在玩python并尝试使用TCP连接学习如何构建python服务器。

我有这个运行服务器的代码......

import socket
from threading import *
import datetime
import time


serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = "localhost"
port = 8000
print (host)
print (port)

serversocket.bind((host, port))

class client(Thread):

    def __init__(self, socket, address):
        Thread.__init__(self)
        self.sock = socket
        self.addr = address
        self.start()


    def run(self):

        while 1:

            st = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
            #cName  =
            print(self.sock.recv(1024).decode()+' sent @ '+ st + ':' , self.sock.recv(1024).decode())

            self.sock.send(b'Processing!')





serversocket.listen(5)
print ('server started and listening')
while 1:
    clientsocket, address = serversocket.accept()
    client(clientsocket, address)

其中两个client.py

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host ="localhost"
port =8000
cName = 'client 2' # or client 1
s.connect((host,port))

def ts(str):
   s.sendall(cName.encode())
   s.send('e'.encode())
   data = ''
   data = s.recv(1024).decode()
   print (data)

while 2:
   r = input('enter')
   ts(s)

s.close ()

我想知道如何让服务器计算并跟踪它从客户端1和客户端2收到消息的次数。

例如,如果服务器从0开始计数(例如count = 0)。并且每次客户端1或客户端2发回消息,或者在这种情况下,点击输入,计数将上升({{1如果我要求count += 1,则输出应为print(count)

感谢?

1 个答案:

答案 0 :(得分:1)

我认为您可以在第一个脚本(服务器脚本)中创建一个全局变量(比如count=0),并在每次从客户端收到消息时继续增加值。

所以你的run方法可以成为,

def run(self):
        global count
        while 1:

            st = datetime.datetime.fromtimestamp(time.time()).strftime('%Y-%m-%d %H:%M:%S')
            #cName  =
            print(self.sock.recv(1024).decode()+' sent @ '+ st + ':' , self.sock.recv(1024).decode())
            count += 1
            self.sock.send(b'Processing!')

如果您希望计数是特定于客户端的,那么创建一个计数字典而不是一个整数,并在验证客户端的某些内容时继续增加相应的整数。