[iPhoneSDK]CF Socket 简介

[iPhoneSDK]CF Socket 简介

 

 

上文提及,使用BSD socket进行数据发送。

由于iPhone的SDK 里面提供的接口是CF Socket。简单DEMO下。

一点基础补充:

Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。

Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函数返回一个整型的Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。常用的Socket类型有两种:流式Socket(SOCK_STREAM)和数据报式Socket(SOCK_DGRAM)。流式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,对应于无连接的UDP服务应用。

 

// 定义读写的 stream.

CFReadStreamRef myReadStream = NULL;

CFReadStreamRef myWriteStream = NULL;

 

//Socket的建立下面有参数的原始声明

///* This is a synonym for NULL, if you'd rather use a named constant. */

//CF_EXPORT

//const CFAllocatorRef kCFAllocatorDefault;

CFStreamCreatePairWithSocketToHost(kCFAllocatorDefault,

    /*host*/ ,

    /*端口*/,

    &myReadStream,

            &myWriteStream);

 

// 打开Stream.

if (myReadStream != NULL && CFReadStreamOpen(myReadStream))

{

UInt8 readBuffer[10];

while (CFReadStreamHasBytesAvailable(stream))

{

//进行读操作

CFReadStreamRead(stream, buffer, 10);

}

}

 

// 写操作

if (myWriteStream != NULL && CFWriteStreamOpen(myWriteStream))

{

// 写一个byte.

UInt8 writeBuffer[1];

writeBuffer[0] = 42;

CFWriteStreamWrite(stream, writeBuffer, 1);

}

 

//关闭Stream

CFReadStreamClose(myReadStream);

CFWriteStreamClose(myWriteStream);

//Release掉不需要的资源

CFRelease(myReadStream);

CFRelease(myWriteStream);

 

原文链接:http://www.cnblogs.com/AlexLiu/archive/2010/03/28/1698745.html

posted @ 2013-03-25 08:57  清风拂月晓  阅读(185)  评论(0编辑  收藏  举报