2017-12-07 32 views
0

ソケットを介して整数値を送信したい。 私はソケットを開いてリクエストを待つpythonスクリプトを持っています。反対側には、値を取得するためにこのソケットでリクエストを送信するJavaサーブレットがあります。TCPソケット通信Java - Python

すべての通信がうまく機能するのは、Javaから取得した値がEOFexceptionを引き起こすことです。私はPythonスクリプト(私はこの言語の専門家ではない)でいくつかの変換とフォーマットを試しましたが、何も動作しません。

代わりに、エコーソケットをpythonで使用し、そのソケットをすべてピックアップしてJavaに送り返すと正常に動作します。

しかし、私は単純な価値を送る必要があります。

以下、この文字列値であり、Iは、フロートと試みた私が使用するコードの一部である:Pythonのエコーソケット[

[Pythonのソケット関連istructions]

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
sock.bind(server_address) 
sock.listen(1) 
connection = sock.accept() 

[Pythonのリターンaを:作業]

data = connection.recv(16) 
if data: 
    connection.sendall(data) 

ではなく、私がやりたいです

socket = new Socket(address, port); 
dataInputStream = new DataInputStream(socket.getInputStream()); 
String content = dataInputStream.readUTF(); //EOFexception 
Destination.value = content; 
+1

'DataInputStream'は、接続のもう一方の端が' DataOutputStream'を使用している場合にのみ使用されます。 Python側は、 'DataInputStream'が理解できる何も送信していません。通常の 'InputStream'を使用する必要があります。この問題を修正した後は、整数ではなくPythonから_string_値を送信しているという点で別の問題が見つかるでしょう。 –

答えて

0

要求を送信]使用して問題を解決 - 私はHerculesのように、クライアントからのリクエストを送信するが、Java

でてEOFExceptionが発生した場合、[Javaサーブレット作業すると、その値の例]

connection.sendall('55') 

DataInputStreamの代わりにInputStream、文字列をバイトとして送信するPythonソケットを記述し、バイトストリームを読み込み、文字列に変換するようにJavaレシーバを変更しました。

関連する問題