ServerSocket отправляет сообщение клиенту - PullRequest
0 голосов
/ 13 февраля 2012
public class Server extends AsyncTask<Void, Intent, Void> {

    private final Context context;

    public Server(Context context) {
        this.context = context;
    }

    @Override
    protected Void doInBackground(Void... params) {
        try {
            ServerSocket server = new ServerSocket(12345);
            while (true) {
                Socket client = server.accept();

                // send message
                OutputStream outputStream = client.getOutputStream();
                String message = "Hello Android! - Send from Server.";
                outputStream.write(message.getBytes());

                // THIS DONT WORK FOR SOME REASONS read message
                String response = "";
//              InputStream inputStream = client.getInputStream();
//              response = Utils.inputStreamToString(inputStream);


                // notify ServerService
                Intent intent = new Intent(Messenger.ACTION);
                intent.putExtra("action", Messenger.SERVER_NEW_CLIENT_CONNECTED);
                intent.putExtra("message", "Message: " + response);
                publishProgress(intent);

                client.close();
            }
            server.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onProgressUpdate(Intent... value) {
        if (value.length == 0)
            return;
        Intent data = value[0];
        context.sendBroadcast(data);
    }

}

Блок, где я читаю сообщение из сокета, закомментирован.Если я не закомментирую это, клиентский сокет не сможет установить соединение с сервером.В чем может быть проблема?

1 Ответ

0 голосов
/ 14 февраля 2012

есть ли какие-либо ошибки, напечатанные на консоли?

Я тоже новичок, но, возможно, может сработать следующее:

DataIntputStream input = new DataInputStream(client.getInputStream()) ;
byte[] b  =  new byte[1024]
input.read(b) ; 
String inputString  = new String(b) ; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...