2010-05-18 57 views
6

我已經用CFSocket創建了一個套接字。 我的程序是正確的,但現在我想關閉套接字(客戶端)。 有一個構造? 感謝和我的英語水平XP我想關閉一個CFSocket

我的代碼惋惜:

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

回答

15

CFRelease(s)應該關閉和破壞插座。

編輯(多一點研究後)

the documentation,關閉套接字的正確方法是無效它(類似於一個定時器是如何工作的,顯然)。所以你想要做的:

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

你確定CFRealease關閉套接字? 我已經測試過但插座不關閉 – zp26 2010-05-18 20:43:01

+1

@ zp26已編輯答案 – 2010-05-18 20:48:51