Python TCP套接字客户端/服务器接收到不正确的数据

问题描述 投票:-1回答:1

我有一个单独的日志文件记录数据。

Python脚本有时运行24小时后,某些数据与日志文件不同。日志文件包含正确的数据,并且数据仅为0或1。

client.py:

import time
import socket
import sys
from datetime import datetime

starttime=time.time()

def send_command(command):
    try:
        s.sendall(command.encode())
        print ("Command sent")
    except Exception as e:
        print (e)

def rev_data():
    data = s.recv(1024)
    print ("Data received: ", data)
    return data


try:
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
    print ("Socket successfully created")
except socket.error as err: 
    print ("socket creation failed with error ", err) 
    sys.exit()

port = 8000

try:
    host_ip = '192.168.1.10'
    s.settimeout(1)
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    # connecting to the server 
    message = s.connect_ex((host_ip, port))
    print (message)

except socket.gaierror: 

    # this means could not resolve the host 
    print ("there was an error resolving the host")
    print('End')
    s.shutdown(socket.SHUT_RDWR)
    s.close #close socket
    sys.exit() 


try:

    while True:
        now = datetime.now()
        this_time = now.strftime("%H:%M:%S")

        print (this_time)

        send_command('RD R001\r')
        a = rev_data()

        send_command('RD R002\r')
        b = rev_data()

        send_command('RD M003\r')
        c = rev_data()


finally:
    print('End')
    s.shutdown(socket.SHUT_RDWR)
    s.close #close socket
    sys.exit()

我无权访问服务器代码。我的client.py有什么问题吗?感谢您的提前帮助!

python sockets networking tcp client-server
1个回答
0
投票

取决于服务器对这些命令的快速响应,该日志文件必须很大。

首先,我建议在该无限循环中短暂入睡:

import time

...

# Sleep for 5 seconds
time.sleep(5)

由于我们不知道您如何记录接收到的数据或其内容,因此我们无法对此做任何假设。但是,通常不需要以这种方式(太多,如此之快,没有明显的原因)敲击I / O。

© www.soinside.com 2019 - 2024. All rights reserved.