如何让socket服务器只允许一个客户端连接
我利用socket建立连接,但是因为是服务器,所以它能连接多个客户端,但是我只想让服务器连接一个客户端,使得其他的客户端连接失败,请问有什么处理方式,或者在建立套接字的过...
我利用socket建立连接,但是因为是服务器,所以它能连接多个客户端,但是我只想让服务器连接一个客户端,使得其他的客户端连接失败,请问有什么处理方式,或者在建立套接字的过程需要添加或修改什么参数?请高手指点
我用的是VC开发工具,设标志位的形式我们也考虑过,不过我们是面向连接的,也就是说服务器listen,等待客户端connect,当有connect的时候就accept,不过listen后面有个参数,表示可以接受多少个客户端连接,默认是1,表示除了第一个已经连接成功之外,还可以再连接一个,所以至少会有两个客户端是连接成功的,只是只有一个能和服务器通信,那么如何实现让服务器只让一个客户端连接成功呢?希望高手们指点 展开
我用的是VC开发工具,设标志位的形式我们也考虑过,不过我们是面向连接的,也就是说服务器listen,等待客户端connect,当有connect的时候就accept,不过listen后面有个参数,表示可以接受多少个客户端连接,默认是1,表示除了第一个已经连接成功之外,还可以再连接一个,所以至少会有两个客户端是连接成功的,只是只有一个能和服务器通信,那么如何实现让服务器只让一个客户端连接成功呢?希望高手们指点 展开
1个回答
展开全部
在服务器端设置一个标志变量,如int flag = 0,当有客户端连接上了,就检查那个标志变量是否为0,如果是的话就连接,然后将这个标志设为1。如果为1的话就拒绝连接。我不知道你是用什么语言编写的,所以具体怎么去拒绝连接就自己多想想吧···
在java里面很容易实现,下面是我在java中实现的服务器端代码,希望对你有帮助。。。
package ob;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
Socket socket;
boolean flag = true;
public void createServer() {
try {
ServerSocket serverSocket = new ServerSocket(9090);
while (true) {
socket = serverSocket.accept();
if (flag) {
System.out.println("有用户连上···");
System.out.println("ip:"+socket.getRemoteSocketAddress().toString()+" port:"+socket.getPort());
flag = false;
}else{
System.out.println("有用户连上···");
socket.close();
System.out.println("关闭用户连接···");
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new Server().createServer();
}
}
在java里面很容易实现,下面是我在java中实现的服务器端代码,希望对你有帮助。。。
package ob;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
Socket socket;
boolean flag = true;
public void createServer() {
try {
ServerSocket serverSocket = new ServerSocket(9090);
while (true) {
socket = serverSocket.accept();
if (flag) {
System.out.println("有用户连上···");
System.out.println("ip:"+socket.getRemoteSocketAddress().toString()+" port:"+socket.getPort());
flag = false;
}else{
System.out.println("有用户连上···");
socket.close();
System.out.println("关闭用户连接···");
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
new Server().createServer();
}
}
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
Storm代理
2023-06-05 广告
2023-06-05 广告
StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,IP...
点击进入详情页
本回答由Storm代理提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询