2017-09-21 22 views
3

私のクライアントからJavaサーバーに文字列を送信しようとしています。その後、サーバーはクライアントにテキストファイルを送信します。CクライアントからJavaサーバーへの文字列の送信

これは、文字列を送信するクライアントコードの一部です。

int n = write(sock_fd,"Ready",5); 
if (n < 0) 
    printf("ERROR writing to socket\n"); 
recv_file(sock_fd, filename); 

そして、これは、Javaコードのサーバーの一部である:私は確認している

InputStream is = socket.getInputStream(); 
InputStreamReader isr = new InputStreamReader(is); 
BufferedReader br = new BufferedReader(isr); 
String message = br.readLine(); 
System.out.println("Message received from client is " + message); 
String FILENAME = "data.txt"; 
sendFile(socket, "data.txt"); 

つまり私はそれは、クライアントCから文字列を読み取ろうとするサーバーのコードに一部を削除した場合、残りのコードは正常に動作し、ファイルが送信されます。しかし、文字列受信コードにコメントを付けないと、サーバーとクライアントの両方が待機します。

誰かが私のためにこの問題を解決したら、私は感謝します。

P.S.私はこの質問が以前に尋ねられたことは知っていますが、それは私を助けませんでしたので、私は新しいスレッドを開始しました。

+1

多分あなたはあなたのメッセージに新しい行を追加する必要がありますか?私は 'br.readline()'のような呼び出しが次の改行まで読むことを期待しています – Ronald

+0

はい、それはまさに私が逃したものです – KulaDamian

答えて

8

br.readLine()は、行を読みたいです。クライアントは改行を送信しないので、サーバは改行を待っています...永遠に!

は、クライアントから送信されたコマンドに改行を追加します。

int n = write(sock_fd,"Ready\n", 6); 
+2

それはトリックをしました、ありがとう! – KulaDamian

関連する問題