问题描述
- Android用wifi热点组建局域网创建socket
-
做一个互联的小游戏,具体是一个手机创建wifi热点,然后其他手机连接到wifi热点进行游戏。采用CS结构,wifi热点之后,就创建一个serversocket总是失败。 public void enableServerService(){ while(getWifiApState(wifiManager) != 13){ sleep(500); } new Thread(){ @Override public void run() { try { ServerSocket server = new ServerSocket(8888); while(true){ Socket sc = server.accept(); DataInputStream dataIn = new DataInputStream(sc.getInputStream()); DataOutputStream dataOut=new DataOutputStream(sc.getOutputStream()); new ServerAgent(sc, dataIn, dataOut).run(); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }.run(); }
解决方案
项目完成一个月了,偶尔看见自己之前问的问题,就解答一下吧。楼主的问题的原因是,开启热点和资源分配不是同步的,new thread里面在暂停线程一段时间就好了。我是在一个死循环里面不停的建立socket,直到成功或者超时(先要等到apstate为13)。我的问题呢,是因为安全管理软件限制了我的网络访问权限。默认WiFi状态允许访问,数据状态不能访问。这个时候WiFi模块变为热点模式,即WiFi被关了,成为数据模式。但是数据也关掉的时候,管理软件却不拦我了。
解决方案二:
楼主解决这个问题了吗?目前我也遇到这个问题,不过出现的契机是,当数据开启的时候,貌似默认不是走WIFI这条路,报错没有权限。
时间: 2024-09-11 04:06:48