2017-07-09 9 views
0

Flinkにソケット接続からのストリーミングテキスト入力を読み込ませようとしています。私の入力ソケットのコードでFlinkソケットソース - UTFでエンコードされた単語をFlinkで読み取ることができません。

、私はFLINKを受信するために、次のテキストを公開するために使用:

outputStream.writeUTF(new String(message.getPayload())); 

しかし、FLINKに、私は接続が動作しているにもかかわらず、着信テキストを読むことができませんでした。私はGoogle-dを使って、readUTF()を使ってテキストを読む必要があることがわかった。つまり、主にエンコーディングが原因です。しかし、これらはInputStreamで行われます。

DataStream<String> text = env.socketTextStream("localhost", port, "\n"); 

誰もがこの上で私に助言することができます:FLINKは私の入力はDataStream<String>の形をしているようことはありませんか?ありがとうございました!

答えて

-1

達成しようとしているプログラムは何ですか? これらはFLINKためuse casesあり、そしてあなたがこれらのいずれかを達成しようとされていない場合、あなただけの低レベルのネットワーク通信に

を行っている場合は、Javaを使用している場合、私は、Java socketsを使用することをお勧めします、それは非常に簡単です。ソケットからデータ入力ストリームを取得して、受信バイトを文字列に変換する必要があります。例えば、ここでは「UTFでエンコードされた単語」を生成しません、私

Socket socket = new Socket(HOST_IP, PORT); 

DataInputStream in = new DataInputStream(socket.getInputStream()); 
byte[] buffer = new byte[256]; 
while ((i = in.read(buffer, 0, buffer.length)) != -1) 
{ 
    String input = new String(buffer, "UTF-8"); 
} 
+0

こんにちは、返信ありがとうございます。私はそれがソケット接続であるソースを設定しようとしています。 Javaソケットに関しては、java.io.DataOuputStream.writeUTF(String str)を使用しています。 – Jamie

+0

コード例を示すために私の答えが更新されました - これが助けてくれることを願って –

+0

ありがとう!今私がする必要があるのは、これをFlinkのデータストリームに適用することです。これは、データ入力が "DataStream text = env.socketTextStream(" localhost "、port、" \ n ");"の形式で行われたためです。これを私の質問に加えました。再度、感謝します。 – Jamie

0

writeUTF()のために働いているものです。これは、readUTF()だけが理解できる16ビットの長さの語接頭部を持つ特定の形式を生成します。 readUTF()を使用しない場合は、writeUTF()のいずれかを使用することはできません。 writeBytes()か、あなたの読書コードに合ったものを使用してください。

関連する問題