欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第13章 基于socket的网络编程_70min.pdf

    • 资源ID:70019742       资源大小:52.89KB        全文页数:25页
    • 资源格式: PDF        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第13章 基于socket的网络编程_70min.pdf

    基于socket的网络编程天翼博路技术部2009.2主要内容?BREW所支持的socket编程?UDP socket编程?TCP socket编程BREWTMDeveloper Training BREW中的socket编程特点?非阻塞异步通信模式-基于回调函数的通知方式?支持TCP和UDP?C网手机至少同时支持3个TCP,4个UDP?BREW提供的通用API?INetMgr?ISocketINetMgr?INetMgr 对象的创建?ISHELL_CreateInstance(piShell,AEECLSID_NET,&piNet)?网络属性?PPP state(OPEN,ASLEEP,CLOSED)?Single IPv4 address?所有操作完成以后释放INetMgr 的函数?OpenSocket()?Creates a STREAM or DGRAM ISocket?GetHostByName()?Name Service(resolver)?Retrieves“A”record via IDNS?Caches results for performance?NetStatus()?Retrieve instantaneous network state?OnEvent()?Register callback for asynchronous network state changesINetMgr 的函数?GetMyIPAddr()?Local IP address?Zero if PPP down?SetLinger()?Linger timer?Defaults to 30 seconds?Max of all INetMgr instances?Close PPP lingerseconds after last socket activity?SetOpt()/GetOpt()?Generic Control?RLP3 settings?PPP credentials?DNS serversISocket 接口?支持支持 IPv4 socket?STREAM or DGRAM?INetMgr 管理网络行为管理网络行为?Opens PPP only when needed?Local IP address needed for Bind(),Connect(),or SendTo()?Loopback 支持支持?INADDR_BREW_LOOPBACK?INADDR_LOOPBACKISocket的函数?Bind()/GetSockName()?Request/retrieve local socket address?Listen()/Accept()?TCP server sockets?Connect(),GetPeerName()?Request,retrieve remote TCP socket address?Read(),ReadV(),Write(),WriteV()?TCP data stream?Shutdown(),Close()?Graceful TCP terminationISocket的函数?SendTo(),RecvFrom()?UDP datagrams?GetLastError()?Specific error code of last operation(e.g.ECONNRESET)?Readable(),Writeable(),Cancel()?Non-blocking I/O?SetOpt()/GetOpt()?Socket options(TCP keep-alive,receive buffer size,etc.)?IOCtl()?Generic control,extensionsBREWTMDeveloper Training BREW UDP socket 编程创建与释放?CreationISocket*mySocket;mySocket=INETMGR_OpenSocket(pMe-pINetMgr,AEE_SOCK_DGRAM);if(!mySocket)DBGPRINTF(“Error value:%x”,INETMGR_GetLastError(pMe-pINetMgr);?Releaseif(mySocket)ISOCKET_Release(mySocket);mySocket=NULL;数据报的发送准备ISOCKET_SendTo(ISocket*pISocket,byte*pBuff,uint16 wBytes,uint16 wflags,INAddr a,INPort wPort)pISocket:Pointer to the ISocket Interface object.pBuff:Buffer containing data to be sent.wBytes:Size of the buffer,in terms of number of bytes.wflags:Not used and must be set to 0.a:IP Address.wPort:Port.转换成网络字节?Port?netPort=HTONS(myPort);?IP Address?netIP=HTONL(myIP);数据发送Void SendPacket(App*pMe)retVal=ISOCKET_SendTo(pMe-pISocket,(byte*)HelloWorld,sizeof(HelloWorld),0,pMe-inAddr,HTONS(pMe-port);switch(retVal)case AEE_NET_WOULDBLOCK:ISOCKET_Writeable(pMe-pISocket,(PFNNOTIFY)SendPacket,pMe);return;/Some sort of network errorcase AEE_NET_ERROR:DBGPRINTF(Network Error);break;default:if(retVal=sizeof(“HelloWorld”)/Successelse/Some other error端口绑定?ISOCKET_Bind()?int ISOCKET_Bind(ISocket*pISocket,INAddra,uint16 wPort)?a=AEE_INADDR_ANY?Explicitly requests that the socket be assigned to any local address.?a=AEE_INADDR_LOOPBACK?Allows for local connections.Sent data is routed back to sending device.?不支持绑定本地地址接收数据static void SetUpNetwork(CVocApp*pMe)int retVal;/Bind to the correct port and ip addressretVal=ISOCKET_Bind(pMe-pIRecvSocket,HTONL(AEE_BREW_LOOPBACK),HTONS(PORT);/Check the return value of ISOCKET_Bind()and display necessary messageswitch(retVal)/Socket not ready yetcase AEE_NET_WOULDBLOCK:ISOCKET_Writeable(pMe-pIRecvSocket,(PFNNOTIFY)SetUpNetwork,pMe);break;/Succesfully connectedcase AEE_NET_SUCCESS:ISOCKET_Readable(pMe-pIRecvSocket,(PFNNOTIFY)ReadInData,pMe);break;/Something went wrong,print error to loggerdefault:DBGPRINTF(retVal%d,ISOCKET_GetLastError(pMe-pIRecvSocket);break;获得数据static void ReadInData(App*pMe)int ret;/When data is ready,receive dataret=ISOCKET_RecvFrom(pMe-pIRecvSocket,(void*)&pMe-indata,sizeof(pMe-indata),ISOCKET_FLAG_SENDTO_WAKEUP|ISOCKET_FLAG_SENDTO_URGENT,NULL,NULL);/Data integrity checksif(ret pIRecvSocket);/Have socket continue to listenISOCKET_Readable(pMe-pIRecvSocket,(PFNNOTIFY)ReadInData,pMe);BREW TCP socket 编程创建和释放?CreationISocket*mySocket;mySocket=INETMGR_OpenSocket(pMe-pINetMgr,AEE_SOCK_STREAM);if(!mySocket)DBGPRINTF(“Error value:%x”,INETMGR_GetLastError(pMe-pINetMgr);?Releaseif(mySocket)ISOCKET_Release(mySocket);mySocket=NULL;建立连接ISOCKET_Connect(pMe-pISocket,HTONL(myIP),HTONS(myPort),(PFNCONNECTCB)ConnectionMade,pMe);static void ConnectionMade(myApp*pMe,int error)/Check error codeswitch(error)case AEE_NET_ETIMEDOUT:/Connection timed outbreak;case AEE_NET_SUCCESS:/Send Some dataif(AEE_NET_WOULDBLOCK=ISOCKET_Write(pMe-pISocket,(byte*)helloworld,sizeof(helloworld)ISOCKET_Writeable(pMe-pISocket,(PFNNOTIFY)SendDataCB,pMe);break;default:/Some other Network errorbreak;是否可写的回调函数static void SendDataCB(myApp*pMe)if(AEE_NET_WOULDBLOCK=ISOCKET_Write(pMe-pISocket,(byte*)helloworld,sizeof(helloworld)ISOCKET_Writeable(pMe-pISocket,(PFNNOTIFY)SendDataCB,pMe);接收数据static void ReadInData(myApp*pMe)int ret;/When data is ready,receive dataret=ISOCKET_Read(pMe-pISocket,(void*)&pMe-indata,sizeof(pMe-indata);/Check for errorif(ret pIRecvSocket);/Have socket continue to listenISOCKET_Readable(pMe-pIRecvSocket,(PFNNOTIFY)ReadInData,pMe);大数据块读写int32 ISOCKET_ReadV(ISocket*pISocket,SockIOBlock iov,uint16 iovcount)int32 ISOCKET_WriteV(ISocket*pISocket,SockIOBlock iov,uint16 wiovcount)typedef structure byte*pbBuffer;uint16 wLen;SockIOBlock;本章关键点?Socket是什么?BREW UDP/TCP socket编程

    注意事项

    本文(第13章 基于socket的网络编程_70min.pdf)为本站会员(qwe****56)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开