2017-09-16 9 views
0

Javaでサーバーとクライアントのソケット接続をシミュレートしようとしています。私はそのコードを持っています:クライアントソケットで受け入れられるデータがサーバーソケットと異なる

private static Socket clientSocket; 
private static PrintWriter pw; 
private static Socket serverSocket; 
private static final int PORT_NUMBER = 1146; 

public static void init() throws IOException { 
    ServerSocket sSocket = new ServerSocket(PORT_NUMBER); 
    clientSocket = new Socket("localhost", PORT_NUMBER); 

    serverSocket = sSocket.accept(); 
    OutputStream os = serverSocket.getOutputStream(); 
    pw = new PrintWriter(os, true); 
} 

private void writePackage(int[] dataPackage) { 
    for (int packageByte : dataPackage) { 
     pw.write(packageByte); 
    } 
    pw.flush(); 

    try { 
     InputStream is = clientSocket.getInputStream(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

私のデータパッケージは16進数の値を持っています。それは127の長さの配列です。クライアントの入力ストリームをチェックすると、最初の26要素だけがサーバーの出力ストリームを書き込んだものであることがわかります。他は異なっている。すなわち26番目の要素は0xC1であり、小数点では193ですが、クライアントの入力ストリーム受け入れは、小数点では196です。

私が見逃していますか?

答えて

1

PrintWriterではなく、OutputStreamを使用してバイナリデータを書き込む必要があります。

+0

あなたは正しいです!違いの原因は何か知っていますか? – kamaci

関連する問題