私のプロジェクトでは、とを使用してDataOutputStream
、DataInputStream
スレッド付きのソケットを使用してバイトを送受信しています。
クライアント
public void run(){
while(isRunning) {//which is true upon connection of the socket to the server
if(scanner.hasNext()){ // I use a scanner to test the program
dos = new DataOutputStream(new OutputStream(socket.getOutputStream));
byte[] toServer = scanner.next().getBytes();
dos.writeInt(toServer.length);
dos.write(toServer);
}
}
}
サーバ
public void run(){
while(isRunning){
if(scanner.hasNext()){
dis = new DataInputStream(new InputStream(socket.getInputStream));
int arrLength = dis.readInt();
byte[] fromClient = new byte[arrLength];
dis.read(fromClient, 0, fromClient.length);
System.out.println("Your string is: " + new String(fromClient));
}
}
}
new String(fromClient)
問題は、サーバー側でを印刷すると、単語/文の最初の文字が常に欠落していることです。クライアントで単語を入力する"Test"
と、サーバーが出力し"est"
ます。しかし、" Test"
(先頭にスペースを入れて)入ると、サーバーは出力し"Test"
ます。何が悪いのか分かりませんか?バイト変換に問題はありますか?