Android / Java сокеты помогают - PullRequest
0 голосов
/ 24 декабря 2010

Вот моя цель. Я проектирую сервер, который будет выплевывать данные каждую секунду. Мне нужно также спроектировать клиент (на Android), который будет подключаться к этому серверу и собирать данные, которые отправляются сервером. Я уже написал некоторый код для этого в Java и для Android. Тем не менее, мой опыт работы с Java и Android очень минимален. У меня было много трудностей с этим, но я начал делать успехи. Мне было интересно, могли бы все взглянуть на мой код и дать несколько советов о том, как лучше всего выполнить этот дизайн. Сервер просто будет постоянно выплевывать данные, а клиент подключится к серверу и начнет сбор отправляемых данных.

Отправляемые данные не важны. Прямо сейчас это будет что-то случайное для тестирования.

Заранее спасибо!

THE JAVA SERVER

import java.io.IOException;

import java.io.ObjectInputStream;

import java.io.ObjectOutputStream;

import java.net.ServerSocket;

import java.net.Socket;





public class SmartServerSocket {

    private ServerSocket server;

    private int port = 7777;



    public SmartServerSocket() {

        try {

            server = new ServerSocket(port);

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

    public static void main(String[] args) {

        SmartServerSocket smart = new SmartServerSocket();

        smart.handleConnection();

    }

    public void handleConnection() {

        // TODO Auto-generated method stub

        System.out.println("Waiting for client message...");

        while (true) {

            try {

                Socket socket = server.accept();

                new ConnectionHandler(socket);

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

    }

}

class ConnectionHandler implements Runnable {

    private Socket socket;

    public ConnectionHandler(Socket socket) {

        this.socket = socket;

        Thread t = new Thread(this);

        t.start();

    }

    public void run() {

        ObjectOutputStream oos = null;

        int test = 0;

        try {

            while(true)

            {

                oos = new ObjectOutputStream(socket.getOutputStream());

                oos.writeObject(Integer.toString(test));

                test++;

                System.out.println("Waiting for client message...");

            } 

        } catch (IOException e) {

                e.printStackTrace();

        } finally {

            try {

                    oos.close();

                    socket.close();

                } catch (IOException e) {

                    // TODO Auto-generated catch block

                    e.printStackTrace();

                }



            }

        }

    }




THE ANDROID CLIENT
import java.io.IOException;
import java.io.ObjectInputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

//import android.app.Activity;

public class ConnectDevice implements Runnable {
    public void run(){
        try {
            System.out.println("test1");
            //InetAddress host = InetAddress.getLocalHost();
            InetAddress host = InetAddress.getByName("THEIPADDRESS");
            Socket socket = new Socket(host.getHostName(), 7777);
            System.out.println("test2");
            ObjectInputStream ois = new ObjectInputStream(socket.getInputStream());
            System.out.println("test3");
            String message = (String) ois.readObject();
            System.out.println("test4");    
            System.out.println("Message: " + message);

            ois.close();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

1 Ответ

0 голосов
/ 24 декабря 2010

Я использую Apache Mina для управления подключением моей игры.Вы должны взглянуть на это.Это действительно сделало мою жизнь проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...