[英]Send message from a basic server to a specific client
我有两个连接到接入点的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
对象将用于不同的客户端。
为了使服务器向特定客户端发送消息,它需要知道哪个套接字属于哪个客户端,因此客户端将必须向服务器发送一些标识自己的消息,并且服务器需要读取和解释那条消息。 然后,它可以使用针对该特定客户端的适当响应进行响应。
如果您仍然遇到问题,请发布您的代码。
UPDATE,因为您向以下问题添加了代码:请参阅有关创建线程的Android文档 。 除了这篇关于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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.