android / java套接字帮助

时间:2010-12-24 17:00:31

标签: java android sockets

这是我的目标。我正在设计一个每秒都会吐出数据的服务器。我还需要设计一个客户端(在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 :(得分:0)

我正在使用Apache Mina来处理我的游戏连接。你应该看看它。它真的让我的生活更轻松。

相关问题