【问题标题】:android/java sockets helpandroid/java 套接字帮助
【发布时间】:2010-12-24 17:00:30
【问题描述】:

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

【问题讨论】:

    标签: java android sockets


    【解决方案1】:

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

    【讨论】:

    • 我愿意,但我这样做的唯一原因是为我正在为项目制作的 android 应用程序创建一个测试方法。该项目将使用 wifly 板连接到 android,因此此时 apache 可能不是一个选项。我正在尝试使其尽可能靠近 wifly 连接。我只是想要一些关于 Java 套接字和 android 基础知识的提示。谢谢。
    猜你喜欢
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 2010-10-16
    相关资源
    最近更新 更多