0

私が作成しているプログラムには2つの問題がありました...問題は、Edittextによってその情報をUDP経由でサーバーに送信したいということです....問題は、プログラムを初めて実行したときにのみプログラムが機能することです、つまり、アプリケーションを開いてテキストを書くと、情報がサーバーに送信されますが、別のことを入力してボタンを押すと、新しい情報が送信されません...もう1つのことはTextView が情報を追加しておらず、サーバーが何らかの情報を送信しているが、アプリケーションがその情報を収集していないことを確認してください。アドバイスありがとう...

コードは次のとおりです。

public class MainActivity extends Activity implements View.OnClickListener {

public static final String SERVERIP = "190.99.20.200";
public static final int SERVERPORT = 5153;
public TextView serverResponse;
public EditText messageToSend;
public Button btnSend;
public boolean start;
public Handler handler;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    serverResponse = (TextView)findViewById(R.id.textView);
    messageToSend = (EditText)findViewById(R.id.editText);
    btnSend = (Button)findViewById(R.id.button);
    btnSend.setOnClickListener(this);
    start = false;
    new Thread(new Server()).start();
    try{
        Thread.sleep(500);
    }catch (InterruptedException e){
        updatetrack("Error on Server:" + e.getMessage());
    }
    new Thread(new Client()).start();
    handler = new Handler(){
        public void handledMessage(Message msg){
            String text = (String)msg.obj;
            serverResponse.append(text);
        }
    };
}

public class Client implements Runnable {

    @Override
    public void run() {
        while(start == false)
        {
        }
        try{
            Thread.sleep(500);
        }catch (InterruptedException e1){
            e1.printStackTrace();
        }
        try{
            InetAddress serverAddres = InetAddress.getByName(SERVERIP);
            updatetrack("Client:Start connectingn");
            DatagramSocket socket = new DatagramSocket();
            byte[] buffer;
            if(!messageToSend.getText().toString().isEmpty())
            {
                buffer = messageToSend.getText().toString().getBytes();
            }
            else
            {
                buffer = ("Message from android").getBytes();
            }
            DatagramPacket packet = new DatagramPacket(buffer, buffer.length,serverAddres,SERVERPORT);
            updatetrack("Client:Sending" + new String(buffer)+ "'n");
            socket.send(packet);
            updatetrack("Client: Messange sentn");
            updatetrack("Client: Succed!n ");
            socket.close();
        }catch (Exception e){
            updatetrack("Client:Error!n" + e.getMessage());
        }
    }
}

public class Server implements Runnable{

    @Override
    public void run() {
        while (start == false)
        {
        }
        try{
            InetAddress serverAddress = InetAddress.getByName(SERVERIP);
            updatetrack("nServer: Start connectingn");
            DatagramSocket socket = new DatagramSocket(SERVERPORT, serverAddress);
            byte[] buffer = new byte[17];
            DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
            updatetrack("Server: Receivingn");
            socket.receive(packet);
            updatetrack("Server: Message received:" + new String(packet.getData())+"'n");
            updatetrack("Server : Succed!n");

        }catch (Exception e){
            updatetrack("Server: Error!n"+ e.getMessage());
        }
    }
}

public void onClick(View view)
{
    start = true;
}

public void updatetrack(String s)
{
    Message msg = new Message();
    String textTochange = s;
    msg.obj = textTochange;
    handler.sendMessage(msg);
}

}

4

1 に答える 1