繁体   English   中英

将邮件从基本服务器发送到特定客户端

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM