【问题标题】:Connecting Java to Objective-C (using AsyncSocket)将 Java 连接到 Objective-C(使用 AsyncSocket)
【发布时间】:2010-09-07 23:19:20
【问题描述】:

我需要在 Java 应用(桌面)和 iOS 应用之间进行通信。我决定在 iPhone 端使用AsyncSocket(并且我已经开始发送数据了)。对于这个问题,I'm just running the EchoServer demo app on OSX 10.6.4。源代码是here

这是我的 Java 代码,简明扼要:

    Socket echoSocket = new Socket("192.168.0.102", 8085);
    PrintWriter out = new PrintWriter(echoSocket.getOutputStream(), true);
    out.println("hello there!");
    out.flush();

这行得通,“你好!”显示在 TCP 监视器上。

EchoServer上,输出只是

           Accepted client 192.168.0.102:4960

所以我知道他们在说话,但我无法获取数据!

编辑:在 Java 方面(包含更多代码),我确实收到了欢迎使用“AsyncSocket Echo Server”消息。

编辑:如果我浏览到服务器,它可以完美运行,所以问题出在我的 Java 代码中。我还需要做什么才能正确完整地写入套接字?

【问题讨论】:

    标签: java iphone objective-c sockets


    【解决方案1】:

    我认为这是一个很好的线索,取自那个演示的AppController.m

    [sock readDataToData:[AsyncSocket CRLFData] withTimeout:READ_TIMEOUT tag:0];
    

    看起来它将读取以 CR 和 LF 结尾的行。所以你可能需要在 Java 端做的是:

    out.print("hello, there\r\n");
    

    或者可能相同:

    out.println("hello, there\r");
    

    【讨论】:

    • 谢谢,我又在火车上几个小时没有连接的情况下解决了这个问题。我正要删除这个问题,但既然你的答案是正确的......
    • 正确的答案是你需要\r\n\r\n...我已经尝试了所有其他组合。我不完全明白这一点,但是....
    猜你喜欢
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 2016-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多