[iPhoneSDK]CF Socket 简介

本文介绍了如何使用CFSocket在iOS设备上建立Socket连接,并演示了读写操作的基本流程。文章详细展示了创建Socket连接到主机的过程,包括初始化读写Stream、进行数据交换以及释放资源。

由于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);


这是我的配置 怎么修改 { "name" : "玩转高尔夫", "appid" : "__UNI__6295C40", "description" : "", "versionName" : "1.1.7", "versionCode" : 117, "transformPx" : false, "app-plus" : { "usingComponents" : true, "nvueCompiler" : "uni-app", "compilerVersion" : 3, "splashscreen" : { "alwaysShowBeforeRender" : false, "waiting" : true, "autoclose" : true, "delay" : 0 }, "safearea" : { "bottom" : { "offset" : "none" } }, "compatible" : { "ignoreVersion" : true }, "modules" : { "Camera" : {}, "Maps" : {}, "Geolocation" : {}, "Payment" : {}, "Share" : {}, "OAuth" : {} }, "distribute" : { "android" : { "schemes" : [ "bentengjia" ], "autoSdkPermissions" : true, "permissions" : [ "<uses-feature android:name=\"android.hardware.camera\"/>", "<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", "<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>", "<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>", "<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", "<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", "<uses-permission android:name=\"android.permission.CALL_PHONE\"/>", "<uses-permission android:name=\"android.permission.CAMERA\"/>", "<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", "<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", "<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", "<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", "<uses-permission android:name=\"android.permission.INTERNET\"/>", "<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>", "<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", "<uses-permission android:name=\"android.permission.READ_LOGS\"/>", "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", "<uses-permission android:name=\"android.permission.RECORD_AUDIO\"/>", "<uses-permission android:name=\"android.permission.USE_FINGERPRINT\"/>", "<uses-permission android:name=\"android.permission.VIBRATE\"/>", "<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", "<uses-permission android:name=\"android.permission.WRITE_CONTACTS\"/>", "<uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\"/>", "<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" ], "abiFilters" : [ "armeabi-v7a", "arm64-v8a", "x86" ], "minSdkVersion" : 23, "targetSdkVersion" : 32 }, "ios" : { "schemes" : [ "bentengjia" ], "privacyDescription" : { "NSPhotoLibraryUsageDescription" : "获取相机权限,使用拍照功能,用于上传图片,修改头像,发布商品", "NSPhotoLibraryAddUsageDescription" : "获取相机权限,使用拍照功能,用于上传图片,修改头像,发布商品", "NSCameraUsageDescription" : "获取相机权限,使用拍照功能,用于上传图片,修改头像,发布商品", "NSLocationWhenInUseUsageDescription" : "获取位置权限,使用定位功能,用于获取用户位置,展示最近的商品信息,编辑地址" }, "dSYMs" : false, "idfa" : false, "urltypes" : [ { "urlidentifier" : "weixin", "urlschemes" : [ "wx9de1eb56351c1724" ] } ], "UniversalLinks" : [ "https://app.xiaojingwangluo.com/apple-app-site-association/" ] // 替换成你的域名 }, "sdkConfigs" : { "ad" : {}, "payment" : { "alipay" : { "__platform__" : [ "ios", "android" ] }, "weixin" : { "__platform__" : [ "ios", "android" ], "appid" : "wx9de1eb56351c1724", "UniversalLinks" : "https://app.xiaojingwangluo.com/apple-app-site-association/" } }, "share" : { "weixin" : { "appid" : "wx9de1eb56351c1724", "UniversalLinks" : "https://app.xiaojingwangluo.com/apple-app-site-association/" } }, "oauth" : { "weixin" : { "appid" : "wx9de1eb56351c1724", "appsecret" : "22f446177ebdad695d0755db27ce77b1", "UniversalLinks" : "https://app.xiaojingwangluo.com/apple-app-site-association/" } }, "maps" : { "amap" : { "name" : "amap_15940968813V7Co3rP0", "appkey_ios" : "ef5e1cf3b67abc5ccf5c0960d1576228", "appkey_android" : "17cc7eb900436bcf72b1cbb0962d9cbf" } }, "speech" : {}, "geolocation" : { "amap" : { "name" : "amap_15940968813V7Co3rP0", "__platform__" : [ "ios", "android" ], "appkey_ios" : "ef5e1cf3b67abc5ccf5c0960d1576228", "appkey_android" : "17cc7eb900436bcf72b1cbb0962d9cbf" } }, "push" : {} }, "icons" : { "android" : { "hdpi" : "unpackage/res/icons/72x72.png", "xhdpi" : "unpackage/res/icons/96x96.png", "xxhdpi" : "unpackage/res/icons/144x144.png", "xxxhdpi" : "unpackage/res/icons/192x192.png" }, "ios" : { "appstore" : "unpackage/res/icons/1024x1024.png", "ipad" : { "app" : "unpackage/res/icons/76x76.png", "app@2x" : "unpackage/res/icons/152x152.png", "notification" : "unpackage/res/icons/20x20.png", "notification@2x" : "unpackage/res/icons/40x40.png", "proapp@2x" : "unpackage/res/icons/167x167.png", "settings" : "unpackage/res/icons/29x29.png", "settings@2x" : "unpackage/res/icons/58x58.png", "spotlight" : "unpackage/res/icons/40x40.png", "spotlight@2x" : "unpackage/res/icons/80x80.png" }, "iphone" : { "app@2x" : "unpackage/res/icons/120x120.png", "app@3x" : "unpackage/res/icons/180x180.png", "notification@2x" : "unpackage/res/icons/40x40.png", "notification@3x" : "unpackage/res/icons/60x60.png", "settings@2x" : "unpackage/res/icons/58x58.png", "settings@3x" : "unpackage/res/icons/87x87.png", "spotlight@2x" : "unpackage/res/icons/80x80.png", "spotlight@3x" : "unpackage/res/icons/120x120.png" } } }, "splashscreen" : { "alwaysShowBeforeRender" : false, "autoclose" : true, "waiting" : true, "androidStyle" : "common", "iosStyle" : "common", "android" : { "hdpi" : "", "xhdpi" : "", "xxhdpi" : "" }, "ios" : { "storyboard" : "" }, "useOriginalMsgbox" : true } }, "uniStatistics" : { "enable" : false }, "nativePlugins" : {}, "nvueLaunchMode" : "", "privacy" : { "prompt" : "template", "template" : { "title" : "玩转高尔夫服务协议及隐私政策", "message" : "您注册为玩转高尔夫用户的过程中,需要完成我们的注册流程并且以点击的形式在线签署以下协议, 请您务必仔细阅读、充分理解协议中的条款内容后点击同意: <a href=\"https://app.xiaojingwangluo.com/yonghuxieyi.html\">《用户注册协议》</a>和<a href=\"https://app.xiaojingwangluo.com/yinsixieyi.html\">《隐私政策》</a>", "buttonAccept" : "同意", "buttonRefuse" : "不同意" } } }, "quickapp" : {}, "mp-weixin" : { "appid" : "wxa6dfeba4db6b93cc", "appscert" : "3ce1d960222d2629b31a039a0df66398", "setting" : { "urlCheck" : true, "minified" : true, "es6" : true, "postcss" : true }, "usingComponents" : true, "uniStatistics" : { "enable" : false }, "requiredPrivateInfos" : [ "chooseLocation", "getFuzzyLocation" ], "permission" : { "scope.userLocation" : { "desc" : "你的位置信息仅用于获取与地点的距离" } }, "optimization" : { "subPackages" : true }, "plugins" : {}, "unipush" : { "enable" : false }, "secureNetwork" : { "enable" : true } }, "networkTimeout" : { "request" : 60000, "connectSocket" : 60000, "uploadFile" : 600000, "downloadFile" : 60000 }, "mp-alipay" : { "usingComponents" : true }, "mp-baidu" : { "usingComponents" : true }, "mp-toutiao" : { "usingComponents" : true }, "uniStatistics" : { "enable" : false }, "h5" : { "title" : "", "router" : { "mode" : "hash", "base" : "" }, "devServer" : { "https" : false, "port" : "" }, "optimization" : { "treeShaking" : { "enable" : true } }, "sdkConfigs" : { "maps" : { "amap" : { "key" : "873347acfe1ad56c9a415eba3cff318a", "securityJsCode" : "f5d6158a4613f238324774452bc77481", "serviceHost" : "" } } }, "template" : "", "unipush" : { "enable" : false } }, "locale" : "zh-Hans", "fallbackLocale" : "zh-Hans" }
最新发布
12-03
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值