【问题标题】:Very odd iPhone - Server problem非常奇怪的 iPhone - 服务器问题
【发布时间】:2010-02-03 20:49:19
【问题描述】:

基本上我是从 iPhone 应用程序向 Java Socket 服务器发送数据,但是发生了一些相当奇怪的事情,直到 iPhone 应用程序关闭才接收数据!我确定我缺少某些东西,但我似乎找不到它,这很奇怪。

这是我的连接的创建方式:

-(CFSocketRef)initSocket {
    CFSocketContext context = {
        .version = 0,
        .info = self,
        .retain = NULL,
        .release = NULL,
        .copyDescription = NULL
    };

    sockety = CFSocketCreate(
        kCFAllocatorDefault,
        PF_INET,
        SOCK_STREAM,
        IPPROTO_TCP,
        kCFSocketDataCallBack^kCFSocketConnectCallBack,
        socketCallBack,
        &context
        );
    uint16_t port = 4444;

    struct sockaddr_in addr4;

    memset(&addr4, 0, sizeof(addr4));
    addr4.sin_family = AF_INET;
    addr4.sin_len = sizeof(addr4);
    addr4.sin_port = htons(port);

    const char *ipaddress = "192.168.1.5";

    inet_aton(ipaddress, &addr4.sin_addr);

    NSData *address = [NSData dataWithBytes:&addr4 length:sizeof(addr4)];

    CFSocketError error = CFSocketConnectToAddress(sockety, (CFDataRef)address, 1);

    if(error != kCFSocketSuccess ) 
    { 
        Faliure = YES;
    } 
    else{
        ViewNo = 2;
    }
    CFRunLoopSourceRef source;

    source = CFSocketCreateRunLoopSource(NULL, sockety, 1);
    CFRunLoopAddSource(CFRunLoopGetCurrent(), source, kCFRunLoopDefaultMode);
    CFRelease(source);
    return sockety;
}

以下是消息的发送方式:

const char *sendStrUTF = [sentmessage UTF8String];
NSData *dataOut = [NSData dataWithBytes: sendStrUTF length: strlen(sendStrUTF)];
CFSocketSendData(sockety, NULL, (CFDataRef) dataOut, 0);

任何帮助将不胜感激!

提前致谢,
奥兹

【问题讨论】:

    标签: iphone cocoa-touch sockets core-foundation


    【解决方案1】:

    您对 CFSocketSendData 的调用是在(阻塞的)GUI 线程上完成的吗?

    我会尝试将这 3 行包装在 performSelectorInBackground / 或延迟组合之后。

    【讨论】:

      【解决方案2】:
      NSData *dat=[stringToSend dataUsingEncoding:NSASCIIStringEncoding];
      CFSocketError w =CFSocketSendData(_socket, NULL,(CFDataRef)dat, 0);
      if (w==kCFSocketSuccess) {
         NSLog(@"success");
      }
      

      【讨论】:

        猜你喜欢
        • 2021-08-26
        • 1970-01-01
        • 2013-02-07
        • 1970-01-01
        • 2013-03-12
        • 1970-01-01
        • 2012-06-17
        • 1970-01-01
        相关资源
        最近更新 更多