2 u010313990 u010313990 于 2014.10.15 22:04 提问

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();
}

4个回答

dwjmantou
dwjmantou   2014.12.17 22:02

项目完成一个月了,偶尔看见自己之前问的问题,就解答一下吧。楼主的问题的原因是,开启热点和资源分配不是同步的,new thread里面在暂停线程一段时间就好了。我是在一个死循环里面不停的建立socket,直到成功或者超时(先要等到apstate为13)。我的问题呢,是因为安全管理软件限制了我的网络访问权限。默认WiFi状态允许访问,数据状态不能访问。这个时候WiFi模块变为热点模式,即WiFi被关了,成为数据模式。但是数据也关掉的时候,管理软件却不拦我了。

dwjmantou
dwjmantou   2014.11.25 10:36

楼主解决这个问题了吗?目前我也遇到这个问题,不过出现的契机是,当数据开启的时候,貌似默认不是走WIFI这条路,报错没有权限。

qq_35509087
qq_35509087   2016.07.04 16:58

179941666 我的qq, 我也有同样的问题请教

yanzhenjie1003
yanzhenjie1003   2016.07.05 11:42

这篇博客讲的蛮清楚的:http://blog.csdn.net/yanzhenjie1003/article/details/51661599
这里还有个开源项目,直接拿来用,和java的servlet一样傻瓜式:https://github.com/yanzhenjie

Csdn user default icon
上传中...
上传图片
插入图片