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

时间:2012-08-08 18:53:51

标签: android sockets

我一直在努力让我的服务器和手机之间的基本套接字连接正常工作。以下代码完美适用于Android模拟器,但是当我在手机上试用它时,它失败了,我不明白为什么。我已经尝试过在SO和Google上找到的大多数建议,但没有一个能够发挥作用。

我的服务器代码只是一些基本的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

我的客户端代码如下:     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

2 个答案:

答案 0 :(得分:0)

你永远不会从你的输入流中读取任何输入,所以它只是在等待..也许你想做的就是在你的缓冲读卡器上调用readLine()。也许可以将输出流代码放在输入流代码之前。

答案 1 :(得分:0)

原来,运营商MTN上的端口2000存在问题。使用另一个端口解决了我的问题。