2017-01-02 81 views
0

我最近在玩python,并试图学习如何使用TCP连接来构建python服务器。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 se发回一条消息,或者在这种情况下,命中输入,计数将会增加(count += 1)。如果我要求print(count),则输出应为1

谢谢?

回答

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!') 

如果你想在计数为特定的客户端,然后创建计数,而不是一个整数的字典和不断递增的验证有关的一些事物的各个整数客户。