views:

109

answers:

1

Hi, I have create a socket with CFSocket. My program is correct but now i wanna close the socket (client side). There is a istruction? Thanks and sorry for my English XP

My code:

CFSocketRef s;
s = CFSocketCreate(
        NULL, 
        PF_INET,
        SOCK_STREAM, 
        IPPROTO_TCP, 
        kCFSocketDataCallBack, 
        AcceptDataCallback, 
        &context);
...
CFSocketConnectToAddress(s, address, 0);
...
//here i wanna close the socket
+3  A: 

CFRelease(s) should close and destroy the socket.

edit (after a bit more research)

According to the documentation, the proper way to close the socket is by invalidating it (similar to how a Timer works, apparently). So you'll want to do:

CFSocketInvalidate(s);  //closes the socket, unless you set the option to not close on invalidation
CFRelease(s);  //balance the create
Dave DeLong
You are sure that CFRealease close the socket?I have test it but the socket doesn't close
zp26
@zp26 edited answer
Dave DeLong