私はJavaとAndroidが初めてで、サーバー/クライアントアプリケーションを作成しようとしています. 今のところ、PC でサーバーを実行しており、クライアントは Android デバイスで実行しています。通信が行われ、すべて正常に動作しますが、サーバー上でさまざまなアクションを実行するために、受信メッセージをクライアントから区別したいと考えています。サーバーのコードは次のとおりです。クライアントは非常に簡単で、うまく機能します。たとえば、クライアントから「名前」を送信すると、サーブは「マッテオ」と応答するはずですが、常に「何か他のもの」と応答し、理由がわかりません! 問題は声明にあると思いますif (dataInputStream.equals("Name")) {
ありがとうございました。
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server1 {
public static void main(String[] args){
ServerSocket serverSocket = null;
Socket socket = null;
DataInputStream dataInputStream = null;
DataOutputStream dataOutputStream = null;
try {
serverSocket = new ServerSocket(8888);
System.out.println("Listening on port 8888");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
while(true){
try {
socket = serverSocket.accept();
dataInputStream = new DataInputStream(socket.getInputStream());
dataOutputStream = new DataOutputStream(socket.getOutputStream());
System.out.println(socket.getInetAddress() + " : " + dataInputStream.readUTF());
if (dataInputStream.equals("Name")) {
dataOutputStream.writeUTF("Matteo!");
}
else if (dataInputStream.equals("Surname")) {
dataOutputStream.writeUTF("Rossi!");
}
else {
dataOutputStream.writeUTF("Something else!");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
if( socket!= null){
try {
socket.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if( dataInputStream!= null){
try {
dataInputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if( dataOutputStream!= null){
try {
dataOutputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
}