我有两部电话:A和B。A充当Wifi AP;B连接A的wifi网络。现在,我想让A充当服务器,B充当客户端。下面是我的代码要点:
A执行以下操作(当然是用自己的线程包装并尝试/catch语句)
ServerSocket server = new ServerSocket(SERVERPORT);
Socket client = server.accept();然后B就会
Socket socket = new Socket(SERVERIP, SERVERPORT);当A激活它的Wifi AP时,SERVERIP总是一样的,所以我现在已经对它进行了硬编码。(我已经验证了几种不同的方法。)
当B试图连接时,我得到以下异常:
java.net.ConnectException: /192.168.43.1:29288 - Network is unreachable
at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:207)
at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
at java.net.Socket.startupSocket(Socket.java:705)
at java.net.Socket.<init>(Socket.java:263)
at disaster.relief.DisasterReliefActivity$ClientThread.run(DisasterReliefActivity.java:288)
at java.lang.Thread.run(Thread.java:1019)当这两部手机在外部创建的wifi网络上时,我试着使用相同的代码,它运行得很好。知道为什么这不管用吗?
更新
我还尝试通过telnet从我的计算机(当它连接到Wifi网络时)连接到服务器,这是非常完美的,所以问题必须是当B实例化套接字时。我是不是遗漏了什么?
发布于 2012-02-12 16:40:04
你能通过你的手机连接到另一个人的手机上上网吗?你应该激活你的服务器,只有当你的网络接口连接结束后,192.168.43.1才会在此之前被禁用。您可以尝试使用相同的技术,使用笔记本电脑或与wifi连接到您的手机,并在其上启用。您可以使用telnet检查端口是否可用并接受。您可能想读一下这个android open socket and send commands。我也会在1024-10000之间使用端口。但我想这取决于你。
希望它能帮到你。
https://stackoverflow.com/questions/9250396
复制相似问题