私はPythonでクライアントを書いて、TCPサーバーにパケットを送信したいと思います。 私は、サーバーimplemantationを知らないが、それは常に(nc server 4444
後など)、このようにメニューを返す:Pythonサーバー接続
Make your choice:
1- test1
2- test2
3- insert two numbers
4- test4
5- test5
6- test6
その後、私は例えば、私が送ってしまう、のpythonですべてを自動化したいシーケンスを次に示します。
1 (test1)
3 (insert two numbers)
2
1
6 (test6)
私は次のスクリプト
class Connect(object):
def connect(self):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
print('connecting to host')
sock.connect(('127.0.0.1',4444))
return sock
def send(self, command):
sock = self.connect()
recv_data = ""
data = True
print('sending: ' + command)
sock.send(command)
while data:
data = sock.recv(1024)
recv_data += data
print('received: ' + data)
sock.close()
return recv_data
def main():
connect = Connect()
connect.send("1")
connect.send("3")
connect.send("2")
connect.send("1")
connect.send("6")
if __name__ == "__main__":
main()
で試してみました。しかし、それは動作しません!
提案がありますか?
ありがとうございます!
サーバの実装を見ることなく確かに知る方法はありませんが、サーバがテキストメニューを戻している場合は、サーバが予期していると思われます。各コマンドの最後に改行または復帰改行が含まれています。 –
@GilHamiltonはいそうですが、各コマンドの最後に改行が必要です。たとえば、ncでうまくいきますが、コマンドごとに新しい行を挿入すると、最初のもの(connect.send( "1 \ n"))のみが実行され、永遠に待機します – Livio