我一直在尝试在我的服务器和电话之间建立一个基本的套接字连接。以下代码在 Android 模拟器上完美运行,但是当我在手机上尝试时,它失败了,我不知道为什么。我已经尝试了在 SO 和 Google 上可以找到的大多数建议,但没有一个有效。
我的服务器代码只是一些基本的 Ruby:需要 '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
我的客户端代码如下: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); 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
显然它正在建立连接。我写了一些更深入的代码,也写回服务器,模拟器再次写入和接收,但我的手机两者都没有,过了一会儿,我的手机报告:“连接被对等方关闭。”
任何想法都会很棒!
编辑:它似乎在我朋友的手机上工作......所以现在我更加难过......我正在使用索尼 Xperia