Objective C套接字服务器不接收Java套接字客户端消息
我使用Objective C套接字服务器不接收Java套接字客户端消息,java,objective-c,sockets,Java,Objective C,Sockets,我使用CoCoCoaAsyncTask在Objective C中创建了服务器,若我从本地主机和同一网络上的telnet进行连接,它可以正常工作 现在我有一个Java客户机,可以与另一个Java服务器很好地工作,我无法进行通信;服务器端未收到任何消息 以下是Java客户端代码供参考: public class Client { public static void main(String[] args) { try { Socket socket
CoCoCoaAsyncTask
在Objective C中创建了服务器,若我从本地主机和同一网络上的telnet进行连接,它可以正常工作
现在我有一个Java客户机,可以与另一个Java服务器很好地工作,我无法进行通信;服务器端未收到任何消息
以下是Java客户端代码供参考:
public class Client {
public static void main(String[] args) {
try {
Socket socket = new Socket("192.168.0.106",4353);
PrintWriter printWriter = new PrintWriter(socket.getOutputStream(),true);
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
while (true) {
System.out.println("Enter message: ");
String msg = br.readLine();
if (msg != null && !msg.equals("bye"))
{
printWriter.println(msg);
}
else
{
break;
} } } catch (IOException e) {e.printStackTrace();} } }
和服务器目标C代码:
...
[newSocket readDataToData:[GCDAsyncSocket CRLFData] withTimeout:15.0 tag:0];
...
(void)socket:(GCDAsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag {
dispatch_async(dispatch_get_main_queue(), ^{
@autoreleasepool {
DDLogInfo(@"data: %@", data);
NSData *strData = [data subdataWithRange:NSMakeRange(0, [data length] - 2)];
DDLogInfo(@"Info: %@", strData);
NSString *msg = [[NSString alloc] initWithData:strData encoding:NSUTF8StringEncoding];
DDLogInfo(@"Info: %@", msg);
我们已经尝试在末尾添加\n
和\r
,但没有成功
是什么原因导致这种通信中断 问题出在服务器端,通过使用
readDataToData
而不是readDataWithTimeout
从套接字接收数据
最可能的情况是,问题出现在行尾,因此库不会将其作为一行进行处理,因此不会为下一个数据调用该方法