我需要在 Java 应用程序(桌面)和 iOS 应用程序之间进行通信。我决定在 iPhone 端使用 AsyncSocket
(并且我已经开始发送数据)。对于这个问题,I'm just running the EchoServer
demo app在 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 代码中。我还需要做什么才能正确地完整写入套接字?
最佳答案
我认为这是一个很好的线索,取自该演示的 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");
关于java - 将 Java 连接到 Objective-C(使用 AsyncSocket),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3663432/