- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ChapterLinux网络编程重点
2. 套接字(socket) UDP套接字多次调用connect可能出于以下目的: 指定新地址的IP地址和端口号(对于TCP,connect只能调用一次) 断开套接字:需要再次调用connect,把地址结构上的地址族成员(sin_family或sin6_family)设置成AF_UNSPEC 性能 未连接套接字两次sendto执行步骤:连接套接字 - 输出第一个数据报 - 断开套接字连接?- 连接套接字?- 输出第二个数据报?-断开套接字连接; 已连接套接字两次write的步骤:连接套接字?- 输出第一个数据报?- 输出第二个数据报 void dg_cli_2(FILE *fp, int sockfd, struct sockaddr *cliAddr, socklen_t addrlen) { char sndmsg[MAXLINE]; char rcvmsg[MAXLINE + 1]; struct sockaddr *replyAddr = malloc(addrlen); while(fgets(sndmsg, MAXLINE, fp)) { if( connect(sockfd, cliAddr, addrlen) 0 ) {… } if( write( sockfd, sndmsg, strlen(sndmsg) ) != strlen(sndmsg)) {… } socklen_t len = addrlen; int rcount = read(sockfd, rcvmsg, MAXLINE); if(rcount 0) {… } rcvmsg[rcount] = 0; fputs(rcvmsg, stdout); } } 2. 套接字(socket) connect函数:客户请求连接 connect函数可能会返回错误,但通常会重连。 #include sys/socket.h /* 建立连接 * @return 成功返回0,出错返回-1 */ int connect(int sockfd, const struct sockaddr *addr, socklen_t addrlen); for (nsec = 1; nsec = MAXSLEEP; nsec = 1) { if (connect(sockfd, addr, alen) == 0) { /* Connection accepted. */ return(0); } /* Delay before trying again. */ if (nsec = MAXSLEEP/2) sleep(nsec); } 指数重连算法 2. 套接字(socket) accept函数:服务器接受某个客户连接 返回新的代表客户的套接字描述符; *addr是客户地址,可以置空(NULL); #include sys/socket.h /* 获得连接请求,建立连接 * @return 成功返回文件描述符,出错返回-1 */ int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen); 2. 套接字(socket) close函数:关闭套接字 两端都要关闭; 服务器端,read调用返回0时,关闭套接字; close在还有未传输数据时阻塞。 2. 套接字(socket) 套接字通信: 端口号不小于1024; loopback回路:连接localhost:127.0.0.1; 指定IPV4地址时,需要使用inet_addr(“127.0.0.1”)函数; 需要指定一组允许连接的IP地址,否则使用INADDR_ANY变量 主机地址端口和网络地址端口需要转换:htons,htonl; //TCP示例服务器端 tcpSrv.c#include?stdlib.h#include?stdio.h#include?errno.h#include?string.h#include?unistd.h#include?netdb.h#include?sys/socket.h#include?netinet/in.h#include?sys/types.h#include?arpa/in
您可能关注的文档
最近下载
- 交通银行真题及答案(可下载).doc VIP
- 《建筑节能与可再生能源利用通用规范》.pdf VIP
- GZ067 智能节水系统设计与安装赛项正式赛卷模块A 评分标准-2023年全国职业院校技能大赛赛项正式赛卷.docx VIP
- 高标准农田建设项目施工组织设计 .pdf VIP
- TPM课件完整版本.ppt VIP
- 河北秦皇岛职业技术学院选聘专任教师考试真题2024.docx VIP
- 学堂在线《临床中成药应用》作业单元考核答案.docx VIP
- 三国两晋南北朝的政权更迭与民族交融ppt课件.pptx VIP
- 围墙护栏制作与安装工程检验批质量验收记录.docx VIP
- 2025年甘肃省张掖市辅警考试题库(附答案).docx VIP
文档评论(0)