Python日志库与socket通信交互。如何禁用它?

2024-04-26 23:54:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我在python中有一个简单的客户机和服务器,它使用域套接字进行通信。 通信协议如下。首先发送长度为8个字符的字符串(如有必要,请填写0,如:00000008),然后发送实际字符串(如上述长度的“password”)

客户机能够成功地向服务器发送一些消息,但当服务器使用sendString发送一些消息时,客户机并没有收到作为第一个字符串的数字。它接收一些日志相关的消息。有人知道怎么解决这个问题吗

例如。 正在接收的字符串长度:INFO:roo

具有发送/接收/记录相关代码的命令代码

def setupLogging(suffix):
   logger = logging.getLogger('root')
   FORMAT = "[%(filename)s][%(levelname)s] %(message)s"
   logging.basicConfig(f=FORMAT)
   formatter = logging.Formatter(FORMAT)
   HDLR = logging.FileHandler(LOG_FILE)
   HDLR.setFormatter(formatter)
   logger.addHandler(HDLR)
   logger.setLevel(logging.DEBUG)
   return logger


def sendString(connSock, inputString, logger):
    strLen = len(inputString)
    fStrLen = str(strLen).zfill(8)
    logger.debug("Length of string being sent : " + fStrLen)
    connSock.sendall(fStrLen)
    logger.debug("Data being sent : " + inputString)
    connSock.sendall(inputString)

def receiveString(connSock, logger):
    fStrLen = connSock.recv(8)
    logger.debug("Length of string being received : " + fStrLen)
    strLen = int(fStrLen)
    str = connSock.recv(strLen)
    logger.debug("Data received : " + str)
    return str

服务器示例代码:

serverSocket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
connection, client_address = serverSocket.accept()
....
        data = receiveString(connection, logger)
        dataStrIO = StringIO.StringIO(data)
        ....
        ....
        sendString(connection, "Dummy", logger)
....

客户:

 sendString(connSock, "Some string", logger)
    # Problem when parsing first number , at this line int(fStrLen)
    receiveString(connection, logger) 

Tags: 字符串debug服务器消息客户机loggingsocketconnection