2010-05-18 8 views
6

J'ai créé un socket avec CFSocket. Mon programme est correct mais maintenant je veux fermer le socket (côté client). Il y a une istruction? Merci et désolé pour mon anglais XPJe veux fermer un CFSocket

Mon 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 

Répondre

15

CFRelease(s) devrait fermer et détruire la prise.

modifier (après un peu plus de recherche)

Selon the documentation, la bonne façon de fermer le socket est en l'invalidant (similaire à la façon dont une minuterie fonctionne, apparemment). Donc, vous aurez envie de faire:

CFSocketInvalidate(s); //closes the socket, unless you set the option to not close on invalidation 
CFRelease(s); //balance the create 
+1

Vous êtes sûr que CFRealisez la socket? Je l'ai testé mais le socket ne se ferme pas – zp26

+1

@ zp26 –