【问题标题】:Trying to receive text via a socket尝试通过套接字接收文本
【发布时间】:2011-10-01 15:02:26
【问题描述】:

我正在尝试做一个简单的测试,将数据发送到服务器程序然后将数据发回的套接字。我可以发送数据,但似乎没有收到回数据。我检查了服务器程序并成功接收数据并使用wireshark查看流量,服务器程序正在发送数据,但我的客户端无法获取数据。 出于显而易见的原因,我隐藏了 IP 地址和端口。

    Socket echoSocket = null;
    PrintWriter out = null;
    BufferedReader in = null;

    try {

        //TODO Need filshills public ip address
        echoSocket = new Socket("xxxxxx",xx);

    } catch (UnknownHostException e) {
        System.err.println("Don't know about host.");

    } catch (IOException e) {
        System.err.println("Couldn't get I/O for "
                           + "the connection to host.");

    }
    PrintWriter pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(echoSocket.getOutputStream())), true);

    //PrintWriter pw = new PrintWriter(echoSocket.getOutputStream(), true);
    pw.flush();

    pw.print("MS01,test,06,000027,01\r\n");
    pw.close();
    try{
    BufferedReader stdIn = new BufferedReader(new InputStreamReader(echoSocket.getInputStream()));
    String check = stdIn.readLine();
    check = check + "";
    //BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
    String userInput;

    while ((userInput = stdIn.readLine()) != null) {
        out.println(userInput);
        System.out.println("echo: " + in.readLine());
         stdIn.close();
    }
    }catch ( Exception e)
    {
        String neil = e.getMessage();
        neil = neil + "";
    }
    out.close();
    in.close();

    echoSocket.close();

【问题讨论】:

  • 你确定服务器最后发送了 /r/n 吗?
  • 您是否尝试在 .close() 调用之后执行 .flush()?
  • 是的,不高兴 stdIn 始终为空。当我调用 BufferedReader 行开始时,它给了我一个强制关闭错误

标签: android sockets


【解决方案1】:

尽量不要关闭PrintWriter,根据getOutputStreamclose会关闭socket:

关闭返回的 OutputStream 将关闭关联的套接字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-25
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-25
    • 1970-01-01
    相关资源
    最近更新 更多