4
如何避免通過CFSocketSendData
將數據發送到無效的套接字? 我試圖確定與CFSockerIsValid
的套接字狀態,但此方法 返回仍然如此,當另一邊關閉。如何確定無效的CFSocket
如何確定套接字是否有效?爲了避免錯誤。
如何避免通過CFSocketSendData
將數據發送到無效的套接字? 我試圖確定與CFSockerIsValid
的套接字狀態,但此方法 返回仍然如此,當另一邊關閉。如何確定無效的CFSocket
如何確定套接字是否有效?爲了避免錯誤。
如果另一端關閉了套接字,那麼您的回調(您在CFSocketCreate中指定的)將被調用,回調類型爲kCFSocketDataCallBack,但數據將爲空。測試這樣的:
void SocketCallback (CFSocketRef s, CFSocketCallBackType callbackType,
CFDataRef address, const void *data, void *info)
{
if (callbackType == kCFSocketDataCallBack) {
NSData *nsData = (NSData *)data;
if (nsData.length == 0) {
NSLog(@"got kCFSocketDataCallBack, but with 0 bytes -- connection terminated");
// do whatever you want to do here when connection is dropped
}
} else {
NSLog(@"SocketCallback type %d", callbackType);
}
}
您可以在那裏設置一個標誌,並用它來知道你的連接斷開,然後當你去寫被丟棄的連接,嘗試重新連接或通知用戶或無論你想做什麼。