Android TCP服务器广播

前端之家收集整理的这篇文章主要介绍了Android TCP服务器广播前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在开发一个使用TCP进行设备连接的Android应用程序.问题是我是套接字编程的新手.我已成功制作了服务器和客户端代码.每个客户端都可以连接到服务器,服务器可以回复客户端.但我似乎无法使服务器同时向所有连接的客户端发送消息.使服务器向客户端广播消息的步骤是什么?
这是服务器代码

ServerSocket server = null;
try {
    server = new ServerSocket(9092); // start listening on the port
} catch (IOException e) {
    Log.d("btnCreate onClick","Could not listen on port: 9092");
}
Socket client = null;
while(true) {
    try {
        client = server.accept();
    } catch (IOException e) {
        Log.d("btnCreate onClick","Accept Failed");
    }
    //start a new thread to handle this client
    Thread t = new Thread(new ClientConn(client));
    t.start();
}

和服务器线程:

class ClientConn implements Runnable {
    private Socket client;

    ClientConn(Socket client) {
        this.client = client;
    }

    public void run() {
        BufferedReader in = null;
        PrintWriter out = null;
        try {
            /* obtain an input stream to this client ... */
            in = new BufferedReader(new InputStreamReader(
                        client.getInputStream()));
            /* ... and an output stream to the same client */
            out = new PrintWriter(client.getOutputStream(),true);
        } catch (IOException e) {
            e.printStackTrace();
            return;
        }

        String msg;
        try {
            while ((msg = in.readLine()) != null) {
                Log.d("ClientConn","Client says: " + msg);
                out.println(msg);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
最佳答案
TCP是一种点对点连接协议.这意味着当您在套接字上发送消息时,它只会转到一个接收器.其他IP协议(如UDP)确实具有“广播”模式,其中一个数据包可以转到多个接收器,但TCP没有这样的功能.

要让服务器向所有客户端发送相同的消息,服务器必须在每个客户端的每个套接字上发送一条消息.

猜你在找的Android相关文章