你好我做了这个服务器类但是它接受了连接。我的感觉是,他们开始说话,但代码永远不会接受。 !连接的!不打印,没有错误,为什么?
作为客户端我使用telnet和softwere我为win做了(当我使用应用程序的客户端时它们工作)。 感谢。
更新!我有新的线索! adb shell netstat说它在IPV6上听(哎呀)!!!!!也许那就是问题!我怎么能“强迫”IPV4 serversocket?
UPDATE2 这是'adb shell netstat'
UPDATE3 查看本书(https://books.google.it/books?id=iO5pX6WoK8YC&pg=PA213&lpg=PA213&dq=serversocket+android+ipv4&source=bl&ots=0kEQxT8odE&sig=cRAaC1oog61bWo2rCBFtLXVITZA&hl=en&sa=X&redir_esc=y#v=onepage&q=serversocket%20android%20ipv4&f=false),在那里搜索网络适配器的ip,让我觉得我可以将服务器绑定到适配器的ip,但是他们不在服务器设置中使用那个ip,我猜...... 但是,使用该构造函数(ServerSocket(port))它应该绑定到所有网络适配器,我是否正确?
我试过了:
ss = new ServerSocket(63999, 50, InetAddress.getByName("0.0.0.0"));
但它仍然无效。
tcp6 0 0 :::3333 :::* LISTEN
tcp6 0 0 ::ffff:192.168.123.3:56085 ::ffff:74.125.232.128:80 ESTABLISHED
tcp6 0 0 ::ffff:192.168.123.3:40439 ::ffff:64.233.166.188:5228 ESTABLISHED
tcp6 0 0 ::ffff:192.168.123.3:39535 ::ffff:192.168.123.1:3333 ESTABLISHED
tcp6 0 0 ::ffff:192.168.123.3:53474 ::ffff:173.194.112.167:443 ESTABLISHED
tcp6 0 0 ::ffff:192.168.123.3:59354 ::ffff:216.58.212.74:443 ESTABLISHED
tcp6 0 0 ::ffff:192.168.123.3:56086 ::ffff:74.125.232.128:80 ESTABLISHED
第一行是服务器,第四行是客户端(可行),其余是典型的谷歌间谍活动......
UPDATE4 问题已经消失了,我不知道如何,我认为原因是路由器随机行为,随机转发电脑的服务器...所以我认为生病删除这个问题很快......
public class ServerClass extends Thread {
ServerSocket ss;
Socket s;
Activity a;
public ServerClass(Activity cx) {
a = cx;
}
@Override
public void run() {
try { ss = new ServerSocket(3333); } catch (IOException e) {}
while (true) {
try { s = ss.accept(); Log.e(tag,"!CONNECTED!"); }
catch (IOException e) { e.printStackTrace(); Log.e(tag,"!ERROR!"); }
//anotherclass.staticfunction(s, a);
} }
}