java - 将 Java 连接到 Objective-C(使用 AsyncSocket)

标签 java iphone objective-c sockets

我需要在 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/

相关文章:

java - 打印两个字符之间的所有文本

iphone - "app is not supported on this device"ios 4.2.1

ios - 需要解释 Apple 关于 NSRunLoop 的文档的摘录

ios - 如何在以逗号分隔的 NSMutableString 中添加多个字符串

java - 在函数式接口(interface)中命名函数有什么意义?

java - 如何使用在多个实例上运行的 Spring MVC 管理登录凭据

java - 两个 Kafka 消费者互相造成奇怪的行为

iphone - 在 cocoa 中使用 JSON

iphone - 仅在另一个 UIImage 内部移动 UIImage

iphone - iPhone 上的 YAJL