2009-11-22 12 views
6

誰も私がこのプログラムをデバッグするのを助けることができますか?TCPプログラム(Java)の問題

次は、サーバーのコードです:

package networking; 

import java.io.IOException; 
import java.io.PrintWriter; 
import java.net.ServerSocket; 
import java.net.Socket; 
import java.util.Scanner; 

class TcpServer { 
    public static void main(String[] args) throws IOException { 
     ServerSocket serverSocket = new ServerSocket(5555); 
     while (true) { 
      Socket client = serverSocket.accept(); 
      Scanner reader = new Scanner(client.getInputStream()); 
      PrintWriter writer = new PrintWriter(client.getOutputStream()); 
      String inputString = reader.nextLine(); 
      System.out.println("Received from client : " + inputString); 
      writer.write(inputString.toUpperCase()); 
      client.close(); 
     } 
    } 
} 

そして、これはクライアントコードです:

package networking; 

import java.io.PrintWriter; 
import java.io.IOException; 
import java.net.Socket; 
import java.util.Scanner; 

class TcpClient { 
    public static void main(String[] args) throws IOException { 
     Socket client = new Socket("localhost", 5555); 
     PrintWriter writer = new PrintWriter(client.getOutputStream()); 
     Scanner reader=new Scanner(client.getInputStream()); 
     writer.println("oPen SOurCe RUleS !"); 
     System.out.println("Received from server : "+reader.nextLine()); 
     client.close(); 
    } 
} 

問題は、私はこのプログラムを実行すると、両方のクライアント&サーバは不定待機状態に入るということです。誰もこのコードの何が間違っているのか教えてもらえますか?

ありがとうございます!

+1

正しいコードはありますか? 。 。 。 TcpClient継ぎ目のインポートが混乱する: 'PrintWriter'をインポートせず、' DataOutputStream'を使用しません。 。 。 。 とにかく、PrintWriterは例外をスローしないので、 'checkError'を呼び出すエラーをチェックする必要があります。 IMHOはロギングにのみ適しています。 –

+0

@カロス:それを指摘してくれてありがとう!私は今それを修正しました! :) – missingfaktor

+0

@Carlos:PrintWriterの代わりに何を使うべきですか? – missingfaktor

答えて

7

FlushingPrintWriterを試しましたか?

あなたはストリームを閉じますが、ライターにあなたがそうしようとしていることは決して通知しません。

+0

ありがとう!問題が解決しました! – missingfaktor