Android套接字建立连接,但不发送或接收

问题描述:

我一直在试图获得我的服务器和手机之间的基本套接字连接。下面的代码完美地适用于Android模拟器,但是当我在手机上试用时,它失败了,我不知道为什么。我已经尝试了大部分我可以在SO和Google上找到的建议,但都没有成功。Android套接字建立连接,但不发送或接收

我的服务器代码只是一些基本的Ruby: 需要 '插座'

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 

而我的客户端代码如下: 公共无效的onCreate(捆绑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

原因是载波MTN上的端口2000存在问题。用另一个端口解决了我的问题。

你永远读从输入流中的任何输入,所以它只是在等待。也许你想要做的是在你的缓冲阅读器上调用readLine()。也许在输入流代码之前放置输出流代码。