我通过CFSocket与服务器建立了通讯。
采用oc和c++混编。
if((m_hSocket = socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
{
NSLog(@"socket error!");
return FALSE;
} NSLog(@"m_hsocket is %d",m_hSocket);
struct sockaddr_in their_addr;

their_addr.sin_family = AF_INET;

NSString *ipString = getIpAddressForHost(hostName);
their_addr.sin_addr.s_addr = inet_addr([ipString UTF8String]);

their_addr.sin_port = htons(port);  

bzero(&(their_addr.sin_zero), sizeof(their_addr.sin_zero));

int optVal = 1024*10;

int optLen = sizeof(int);

setsockopt(m_hSocket, SOL_SOCKET, SO_RCVBUF,(char *)&optVal, optLen);

setsockopt(m_hSocket, SOL_SOCKET, SO_SNDBUF,(char *)&optVal, optLen);

CFSocketContext socketCtxt = {0,this,NULL,NULL,NULL};

CFSocketRef socketRef = CFSocketCreateWithNative(kCFAllocatorDefault, m_hSocket, kCFSocketReadCallBack, &recvData, &socketCtxt);

CFRunLoopSourceRef runLoopSource = CFSocketCreateRunLoopSource(kCFAllocatorDefault, socketRef, 0);

CFRunLoopAddSource(m_cfRunLoopRef, runLoopSource, kCFRunLoopDefaultMode);

CFRelease(runLoopSource);

CFRelease(socketRef);---------------------------------------------------------
static void recvData(CFSocketRef socket, CFSocketCallBackType type, CFDataRef address, const void *data, void *info) 

        NSLog(@"hello!");

仍然是急于底层的socket,但是与服务器交互过程中CFSocketCreateWithNative指定的回调函数有时候不会触发,看了下iphone的开发文档,kCFSocketReadCallBack这个标志只要是有效数据就会触发回调,可是我的程序为什么有的时候却收不到服务器返回的信息有时候能收到。希望有了解这方面开发经验的指点一下,不一定要了解iphone的开发,socket通讯过程中这种情况是什么原因,有好的解决方法没有?
谢谢了。