小编joo*_*as_的帖子

是否可以在Apple iOS设备上激活TCP keepalive

Apple设备===路由器=== WiFi模块

Apple设备(iPhone)通过TCP连接连接到WiFi模块端口2000.我想在Apple设备上激活TCP keepalive数据包发送,以找出与WiFi模块的TCP连接何时丢失(模块已关闭).

我的流设置

CFReadStreamRef readStream;
CFWriteStreamRef writeStream;

CFStreamCreatePairWithSocketToHost(NULL, (CFStringRef)CFBridgingRetain(moduleIPaddress), port2000, &readStream, &writeStream);

outputStream = (NSOutputStream *)CFBridgingRelease(writeStream);
inputStream = (NSInputStream *)CFBridgingRelease(readStream);



[outputStream setDelegate:(id)self];
[inputStream setDelegate:(id)self];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream open];
[inputStream open];
Run Code Online (Sandbox Code Playgroud)

我试图激活keepalive根据David H发布在iOS中保持套接字连接

- (void) stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent {
    switch (streamEvent) {

    case NSStreamEventOpenCompleted:

            if (theStream == outputStream) {

                /*
                 CFDataRef data = (CFDataRef)CFWriteStreamCopyProperty((__bridge CFWriteStreamRef)theStream, kCFStreamPropertySocketNativeHandle);
                 if(data) {
                 CFSocketNativeHandle socket_handle = *(CFSocketNativeHandle *)CFDataGetBytePtr(data);
                 CFRelease(data);

                 NSLog(@"SOCK HANDLE: %x", socket_handle);

                 //Enabling keep alive
                 int …
Run Code Online (Sandbox Code Playgroud)

sockets iphone tcp ios

5
推荐指数
2
解决办法
7804
查看次数

标签 统计

ios ×1

iphone ×1

sockets ×1

tcp ×1