サーバーと電話の間で基本的なソケット接続を機能させようとしています。次のコードは Android エミュレーターでは完全に機能しますが、携帯電話で試してみると失敗し、その理由がわかりません。SO と Google で見つけたほとんどの提案を試しましたが、どれも機能しません。
私のサーバー コードは基本的な Ruby です: require 'socket'
server = TCPServer.new 2000
puts 'Server started!'
loop do
Thread.start(server.accept) do |client|
puts "Received client"
client.write "Connection established."
while text = client.gets
puts text
client.puts text # Just echo the result back...
end
client.close
end
end
私のクライアント コードは次のとおりです。setContentView(R.layout.activity_main);
try{
Socket s = new Socket("***", 2000);
BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
PrintWriter out = new PrintWriter(s.getOutputStream());
out.println("test\r\n");
out.flush();
out.close();
}catch(Exception e){
}
}
このコードは、エミュレーターで予期される応答を返します。
Server started!
Received client
test
しかし、携帯電話で実行すると、次のように返されます。
Server started!
Received client
明らかに接続を確立しています。私が書いたさらに詳細なコードがいくつかあり、それもサーバーに書き戻します。エミュレーターは書き込みと受信を行いますが、しばらくすると、電話は「ピアによって接続が閉じられました」と報告されます。
どんなアイデアも素晴らしいでしょう!
編集:友人の電話でも動作するようです...だから今、私はさらに困惑しています...私はSony Xperiaを使用しています