首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python-Sockets:使用IF语句的求值行为错误

Python-Sockets:使用IF语句的求值行为错误
EN

Stack Overflow用户
提问于 2018-06-13 11:57:23
回答 1查看 325关注 0票数 0

Node.py

代码语言:javascript
复制
import socket
import sys
import time
import pp_json as ppjs
import SWATT as sw

# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#Get Client IP
client_IP = sock.getsockname()

#Status message for node
status_message = {'Node ID' : 'NS-1', 'Status' : 'Online', 'Node IP' : client_IP }

#Message serialized
ser_clientMsg = ppjs.pp_json(status_message)

#Start Verification variable initialization
flag = '101'


# Connect the socket to the port where the server is listening
server_address = ('localhost', 10100)
print >>sys.stderr, 'connecting to Verifier at %s port %s' % server_address
sock.connect(server_address)


var=1
try:
    print >>sys.stderr, 'Sending Node Status "%s"' % ser_clientMsg
    sock.sendall(ser_clientMsg)
    # Send data
    while var:
        recvData = sock.recv(256)
        print >>sys.stderr, 'Received from Verifier: "%s" \n' % recvData
    if recvData == flag:
        print "Starting verification process...\n"
        filename = "hello.txt"
        fh = open(filename,"r")
        temp_str = fh.read()
        checksum = sw.SWATT(temp_str, len(temp_str))
        sock.sendall(checksum)
finally:
    print >>sys.stderr, 'closing socket'
    sock.close()

Verifier.py

代码语言:javascript
复制
import socket
import sys
import time as t
import json

startTime = t.time()

#Count variable initialization
count = 0

#Send Start Verification Prompt
start_verif = '101'

# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#Bind the socket to the port
server_address = ('localhost', 10100)
print >>sys.stderr, 'Starting Verifier on %s port %s' % server_address
sock.bind(server_address)

#Listen for incoming connections
sock.listen(1)

while True:
    #Wait for connection
    print >>sys.stderr, 'Waiting for connection establishment'
    connection, client_address = sock.accept()
    try:
        print >>sys.stderr, 'Connection from', client_address

        #Receive the data in chunks and retransmit it
        while True:
            if count == 0:
                statusData = connection.recv(256)
                parsedData = json.loads(statusData)
        #print >>sys.stderr, 'Received "%s"' % parsedData
                print "Received Node Status: \n", json.dumps(parsedData, indent=4, sort_keys=True)
                count+=1
            elif count == 1:
                print 'Sending Verification Trigger:\n', start_verif
                connection.sendall(start_verif)
                count+=1
                checksum = connection.recv(256)
                print "Checksum value from Prover: ", checksum
                print "\n"
            else:
                print >>sys.stderr, 'SWATT successfully computed on Node with Node address: ', client_address

    finally:
        elapsedTime = t.time() - startTime
        print elapsedTime
        connection.close()

我猜问题出在Node.py中的第37行,因为我可以在Node终端上看到前一行打印的值101,即第36行。你能帮我找出错误的确切位置吗?另外,如果你需要我导入的模块的代码,请评论。我将很乐意在随后发布它们。

EN

回答 1

Stack Overflow用户

发布于 2018-06-29 15:52:23

代码语言:javascript
复制
while var:
    recvData = sock.recv(256)
    print >>sys.stderr, 'Received from Verifier: "%s" \n' % recvData
if recvData == flag:

当您接收到数据时,在检查其标志之前,您尚未对数据进行解码。在if语句之前尝试:recvData = recvData.decode('utf-8')

我并不是真的使用python 2,但据我所知,这应该可以工作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50828864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档