java - 从基本服务器向特定客户端发送消息

标签 java android sockets serversocket

我有两个连接到我的接入点的 WiFi 模块 M1 和 M2。我有一部连接到同一接入点的 Android 手机。我的 Android 手机上有一个套接字服务器,两个模块作为客户端连接到服务器。现在我的问题是,是否可以从我的手机向模块 M1 发送字符串消息,而无需向 M2 发送任何内容。我想在向其发送消息的客户端之间进行选择。在 Java 中是否可能?

好的,开始了。

//setting up server
ServerSocket serverSocket = new ServerSocket(8000, 0, IPaddress);

//creating a client socket to accept it
Socket clientSocket = serverSocket.accept();

现在,我在单独的线程中接受客户端,这样主线程就不会因为 accept() 函数阻塞而卡住。

我不知道如何在每次新客户端连接时创建一个新线程。我也不知道如何限制可以连接的客户端数量。我最多需要 5 个客户,不能再多了。

最佳答案

是的,这是可能的。您需要与每个客户端保持单独的连接。 ServerSocket 类有一个 accept() 函数,该函数返回一个 Socket 对象。该对象代表两点(您的服务器和一个客户端)之间的连接。您可以在循环中多次调用 ServerSocket.accept() 来接受所有传入连接。返回的每个 Socket 对象将针对不同的客户端。

为了让服务器向特定客户端发送消息,它需要知道哪个套接字属于哪个客户端,因此客户端必须向服务器发送一些标识自己的消息,而服务器需要阅读并解释该消息。然后它可以为该特定客户端提供适当的响应。

如果您仍然遇到问题,请发布您的代码。

更新,因为您向问题添加了代码:请参阅 Android Documentation关于创建线程。除了 stackoverflow 上的这篇文章之外,还需要大量阅读。

至于接受连接和启动线程,只需循环执行即可:

for(int i = 0; i<5; i++){
    clientSocket = serverSocket.accept();
    // start a new thread, passing it the clientSocket as an argument
}

其他可能有用的链接: https://developer.android.com/resources/articles/painless-threading.html https://developer.android.com/guide/topics/fundamentals/processes-and-threads.html

关于java - 从基本服务器向特定客户端发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10841088/

相关文章:

Java - 如何执行一个进程

python - 多处理和套接字。如何等待?

c - C Socket编程中的多个客户端

node.js - 无法连接安全的 websocket

java - 我不明白为什么会出现此错误 : ConcurrentModificationException

java - 我们如何在容器下创建子文件夹我的问题有些不同

android - 使用 Eclipse 创建签名发布版本后,如何运行发布 APK?

android - 是否可以将 Android 应用程序嵌入到现有应用程序中?

android - 增加android中按钮的宽度

java - Hibernate 中的 AnnotationConfiguration 和 Configuration 有什么区别?