2017-09-16 199 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(); 
    } 
} 

我的數據包有十六進制值。它是一個127長度的數組。當我檢查客戶端輸入流時,我發現只有前26個元素是我編寫服務器輸出流的元素。其他則不同。即第26個元素是0xC1,它是十進制的193,但客戶端輸入流接受的是十進制的196

我想念什麼?

回答

1

您應該使用OutputStream來寫入二進制數據,而不是PrintWriter

+0

你是對的!你知道導致差異的原因嗎? – kamaci

相關問題