简体   繁体   中英

TCP Python Socket Server Response

I'm writing a TCP python script that will act as a server and retrieve a temperature reading from a machine (the client). I need to pass a command to the client from the server and listen for an output of the response. I successfully reach the cmd definition line, but when s.accept() is called I'm left hanging with no response from the client.

Server.py

import socket
port = 7777
ip = raw_input('192.168.62.233')

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((ip, port))
s.listen(1)
print "waiting on port: ", port

while True:
    cmd = raw_input('KRDG? A[term]')#command send to client

    conn, addr = s.accept()

    s.send(cmd)

    print "It sent"

    data = conn.recv(4096)

    print "Received:", data, " from address ", addr

Edit:

I believe you're correct, I should consider my code the client and temperature readout at the server. I do now get left hanging after "here 2" when I go to s.recv().

Client.py

import socket

ip = '192.168.62.233'
port = 7777              # The same port as used by the server
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, port))

print 'here'
s.send('KRDG? A[term]')

print 'here 2'
data = s.recv(4096)
print 'here 3'
s.close()
print 'Received', repr(data)

Usually, a TCP server accept will block while it waits for a client to connect. Have you checked to make sure that you client can and is connecting? You could use a tool like tcpdump or similar to watch the network activity and make sure the client is connecting.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM