2016-05-25 20 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()に行くと、 "here 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

私はあなたが正しいと信じています、私は自分のコードをクライアントと温度の読み取りをサーバーで考慮する必要があります。 –

+0

@ScottMacdonaldこれで、あなたはip:portでサーバに接続し、それにデータを送信することができますが、あなたはドンしません。しかし、私は今、 "here 2"の後ろにぶら下がっています。もう何も受け取りません。サーバーコードはありますか?サーバーでクライアントデータが受信されたかどうか、およびサーバーがそのデータを受信したかどうかを確認できますか? – margold

答えて

0

通常、TCPサーバ、クライアントが接続することが待っている間ブロックされます受け入れます。クライアントが接続できることと接続していることを確認しましたか? tcpdumpなどのツールを使用してネットワークアクティビティを監視し、クライアントが接続していることを確認できます。

関連する問題