- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* 第五章 SOCKET API 应用实例 #define MAX_FILE_NAME_LENGTH 100 #define MAX_DATA_LENGTH 2048 struct file_name_t { // 定义传输的文件名报文结构 unsigned long FileLength; unsigned char FileName[MAX_FILE_NAME_LENGTH]; }; struct info_trans_pdu_t { // 定义传输的报文结构 unsigned short PDU_type; // 为了对齐,所以采用short,按理char就够了! unsigned short PDU_length; uion { struct file_name_t FileInfoData; unsigned char PduData[MAX_DATA_LENGTH]; } InfoTransPduBody; }; * 一个问题: 怎么知道网络故障? 第五章 SOCKET API 应用实例 * 第五章 SOCKET API 应用实例 SOCKET函数API返回小于0 * 另外一个问题: 客户机在读键盘 怎么知道网络故障?? 第五章 SOCKET API 应用实例 * 第五章 SOCKET API 应用实例 read(键盘) TCP连接 ?? read(键盘) TCP连接 select() 哪个发生事件就读取哪个! * int EventFd[2], MaxFd, i; fd_set EventReadFd; EventFd[0] = 1; // 键盘的描述字 EventFd[1] = SocketFd; // TCP连接的描述字 MaxFd = EventFd[0]和EventFd[1]的最大值 + 1; FD_ZERO(EventReadFd); // 清除EventReadFd for (i = 0; i 2; i++) { FD_SET(EventFd[i], EventReadFd); // 设置EventReadFd,排列事件顺序 } select(MaxFd, EventReadFd, NULL, NULL, NULL); // 等待事件到达 for (i = 0; i MAX_EVENT_NUMBER; i++) { if (FD_ISSET(EventFd[i], EventReadFd)) { // 看看是哪个事件 switch (i) { case 0: read(1); break; // 键盘事件(字节到达) case 1: read(SocketFd); break; // 网络事件(数据到达) } } } * 还有一个问题: 从键盘读取一个字串 怎么做??? 第五章 SOCKET API 应用实例 * 第五章 SOCKET API 应用实例 A传输的文字字串\n F传输的文件的文件名\n(字串) E\n 第一个字符是命令类型 之后的字符串称为命令属性字 * 第五章 SOCKET API 应用实例 char ReadKeyString(char *pCommand) 函数 功能:从键盘读取命令类型和命令属性字 返回值:命令类型代码 参数:存放命令属性字的缓冲区地址 * 第五章 SOCKET API 应用实例 read(键盘) char buf[1024]; int len; len = read(1, buf, ?); char ReadKeyString(char *pCommand) { char c = 0, cCommand; int i = 0; // 当前字符下标 read(1,
文档评论(0)