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

将Java连接到Objective-C(使用AsyncSocket),java,iphone,objective-c,sockets,Java,Iphone,Objective C,Sockets,我需要在Java应用程序(桌面)和iOS应用程序之间进行通信。我决定在iPhone端使用AsyncSocket(我已经将数据发送到了工作中)。对于这个问题,请参见OSX 10.6.4。源代码是 下面是我的Java代码,总结如下: Socket echoSocket = new Socket("192.168.0.102", 8085); PrintWriter out = new PrintWriter(echoSocket.getOutputStream(), true);

我需要在Java应用程序(桌面)和iOS应用程序之间进行通信。我决定在iPhone端使用
AsyncSocket
(我已经将数据发送到了工作中)。对于这个问题,请参见OSX 10.6.4。源代码是

下面是我的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”的消息


Edit:如果我浏览到服务器,它工作得很好,所以问题出在我的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");

谢谢,我又在几个小时没接火车的情况下解决了这个问题。我正要删除这个问题,但由于您的答案在这里,正确的答案是您需要
\r\n\r\n
。。。我试过所有其他的组合。我不太明白,但是。。。。