【发布时间】:2016-05-25 05:19:19
【问题描述】:
我正在编写一个 TCP python 脚本,它将充当服务器并从机器(客户端)检索温度读数。我需要从服务器向客户端传递一个命令并监听响应的输出。我成功到达了 cmd 定义行,但是当调用 s.accept() 时,我被挂起,客户端没有响应。
服务器.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
编辑:
我相信你是对的,我应该将我的代码视为客户端和服务器上的温度读数。当我转到 s.recv() 时,我现在确实在“here 2”之后挂了。
客户端.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)
【问题讨论】:
-
通常情况正好相反:客户端通过命令询问服务器。客户端代码在哪里?
-
我相信你是对的,我应该将我的代码视为客户端和服务器上的温度读数。当我在编辑中看到 s.recv() 时,我现在确实在“here 2”之后挂了
-
@ScottMacdonald 因此,您可以在 ip:port 成功连接到您的服务器,并向其发送数据,但您没有收到任何回复。有服务器代码吗?能否在服务端检查是否收到了客户端数据,以及服务端如何处理这些数据?