2016-05-25 180 views
0

我在寫一個TCP python腳本,它將充當服務器並從機器(客戶端)獲取溫度讀數。我需要從服務器向客戶端傳遞命令,並偵聽響應的輸出。我成功地到達了cmd定義行,但是當s.accept()被調用時,我留下了沒有來自客戶端的響應。TCP Python套接字服務器響應

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 

編輯:

我相信你是正確的,我應該考慮我的代碼在服務器,客戶端和溫度讀數。當我進入s.recv()時,現在我在「這裏2」之後掛了。

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) 
+1

通常情況相反:客戶端通過命令詢問服務器。客戶代碼在哪裏? – Daniel

+0

我相信你是正確的,我應該考慮我的代碼客戶端和溫度讀取在服務器上。當我到達s.recv()時,我現在會在「this 2」之後掛起,如編輯 –

+0

@ScottMacdonald所示。所以你可以在ip:port上成功地連接到你的服務器,並向它發送數據,但是你不會不會收到任何回報。你有服務器代碼嗎?你可以檢查服務器是否收到客戶端數據,以及服務器用它做什麼? – margold

回答

0

通常情況下,TCP服務器接受同時等待客戶端連接將被阻塞。你有沒有檢查過,以確保你的客戶可以連接?您可以使用tcpdump或類似的工具來觀察網絡活動並確保客戶端正在連接。