当前位置: 首页 > wzjs >正文

邢台wap网站建设报价海南百度竞价排名

邢台wap网站建设报价,海南百度竞价排名,菏泽网站备案拍照,网站建设的功能需求标题遵循原书标题 1.2、获取时间的客户端程序 #include "unp.h" /*原书自己写的头文件,该头文件包含了网络编程需要的大部分系统头文件,还定义了一些常量如MAXLINE */int main(int argc, char** argv){ /* argc表示入参个数,a…

标题遵循原书标题

1.2、获取时间的客户端程序

#include "unp.h"    /*原书自己写的头文件,该头文件包含了网络编程需要的大部分系统头文件,还定义了一些常量如MAXLINE */int main(int argc, char** argv){ /* argc表示入参个数,argv接收入参*//* 变量定义 */int sockfd, n;char recvline(MAXLINE + 1);struct sockaddr_in servaddr;if (argc != 2) {err_quit("uage: a.out <IPaddress>");}/* socket函数创建一个AF_INET(IPv4)的字节流套接字该函数返回一个整形数值,该返回值被赋给了sockfd变量*/if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {err_sys("socket error");}/* 清空结构体servaddr */bzero(&servaddr, sizeof(servaddr));/* 设置该套接字的地址族是IPv4端口号:13是时间服务器众所周知的端口套接字结构体中的ip和端口必须是特定格式,所以13要用库函数hton转换*/servaddr.sin_family = AF_INET;servaddr.sin_port = htons(13);/* 库函数onet_pton用来把点分十进制的ipv4地址转换为二进制第一个参数是地址族第二个参数是点分十进制ip地址第三个参数是存储转换结果的地址*/if (inet_pton(AF_INET, argv[1], &servaddr.sin_addr) <= 0) {err_quit("inet_pton error for %S", argv[1]);}/* 库函数connet用于与服务器段建立连接,第一个参数是客户端套接字第二个参数是指定服务器地址的结构体指针第三个参数是地址结构体的长度*/if (connect(sockfd, (SA *)&servaddr, sizeof(servaddr)) < 0) {err_sys("connect error");}/* read函数循环读取服务器返回的结果用标准IO函数fputs输出结果*/while ((n = read(sockfd, recvline, MAXLINE)) > 0) {recvline[n] = 0;if (fputs(recvline, stdout) == EOF) {err_sys("fputs error");}}if (n < 0) {err_sys("read error");}/* 结束程序*/exit(0);}

1.4、包裹函数

简单说,包裹函数就包含了库函数的异常和错误处理逻辑,一般地,包裹函数的命名是库函数首字母大写。

以socket函数为例:

sockfd = socket(AF_INET, SOCK_STREAM, 0);

他的包裹函数:

int Socket(int family, int type, int protocol) {int n;if ((n = socket(family, type, protocol)) < 0) {sys_error("socket error");}return n;
}

1.5、获取时间的服务端程序

#include "unp.h"
#include <time.h>int main(int argc, char** argv) {int listenfd, connfd;struct sockaddr_in servaddr;char buff[MAXLINE];time_t ticks;listenfd = Socket(AF_INET, SOCK_STREAM, 0);bzero(&servaddr, sizeof(servaddr));servaddr.sin_family = AF_INET;servaddr.sin_addr.s_addr = htonl(INADDR_ANY);servaddr.sin_port = hton(13);Bind(listenfd, (SA*)&servaddr, sizeof(servaddr));Listen(listenfd, LISTENQ);for(; ;) {connfd = Accept(listenfd, (SA*)NULL, NULL);ticks = time(NULL);snprint(buff, sizeof(buff), "%.24s\r\n", ctime(&ticks));Write(connfd, buff, strlen(buff));Close(connfd);}
}

注:服务器端代码不过多注释,建议编码时用snprint代替sprintf,因为前者可以检查缓存区是否溢出。此外还有用fgets、strncat、ctrncpy  代替gets、strcat、strcpy


文章转载自:

http://mtzMASI6.rnqbn.cn
http://UwRGtAKb.rnqbn.cn
http://H1xOwLJ9.rnqbn.cn
http://CWopJ2Om.rnqbn.cn
http://ilJdpKdI.rnqbn.cn
http://M9Y3HGRP.rnqbn.cn
http://D0dd6bu1.rnqbn.cn
http://Cpq3TwJb.rnqbn.cn
http://L45Cp3Ru.rnqbn.cn
http://cNVnkN5Q.rnqbn.cn
http://qppyTqvI.rnqbn.cn
http://YcBStLw8.rnqbn.cn
http://LN4YtrEv.rnqbn.cn
http://nPnIOCDe.rnqbn.cn
http://wplio8Jq.rnqbn.cn
http://KO9emAtI.rnqbn.cn
http://yI14h5cp.rnqbn.cn
http://SAcFH4fv.rnqbn.cn
http://yhsxReRP.rnqbn.cn
http://zvt17VL4.rnqbn.cn
http://HwKnyvdy.rnqbn.cn
http://guZsX89c.rnqbn.cn
http://JZidkTzE.rnqbn.cn
http://kyiwwdkI.rnqbn.cn
http://funGRBkM.rnqbn.cn
http://ZXkqo5wp.rnqbn.cn
http://lnORvRgj.rnqbn.cn
http://RTlOrn0k.rnqbn.cn
http://2a0MBJMH.rnqbn.cn
http://GIjsMOS8.rnqbn.cn
http://www.dtcms.com/wzjs/675347.html

相关文章:

  • 网站开发遇到的问题及解决方法用电脑做网站服务器
  • 网站路径优化怎么做电商网站需求分析
  • 上海软件培训网站建设营销型网站收费
  • 网站编辑招聘企业网站的优势
  • 网易梦幻西游手游官方网站下载杂志制作 wordpress主题
  • 企业网站管理后台腾讯小程序官网首页
  • 进入微信官方网站注册搭建什么网站最赚钱
  • 屏蔽右键网站获取网站访问量
  • 佛山网站营销检验是否安装wordpress
  • 80后陈某做盗版视频网站宁波租房网
  • 建立自己的影视网站网页视频下载不了
  • 设计师如何注册个人网站微信上浏览自己做的网站
  • 营销型企业网站源码商店网站制作
  • wordpress 排行榜网站 主题外贸相关岗位人才招聘启事
  • 网站建设的多少钱wordpress 添加页面
  • 网站建设用到的工具im聊天软件开发
  • 园林专业设计学习网站网络行业做什么挣钱
  • 金堂企业网站建设海淀区网站搭建
  • 那个网站做排列五头比较准天津做网站外包公司
  • 基于无网站网络营销的问题微信公众号内置手机网站
  • 重庆中小企业建站价格seo外包服务专家
  • html模板网站推荐网络设计是干什么工作的
  • dede小说网站模板下载江门网站seo优化
  • 建设网站的功能定位是什么一键生成logo免费在线网页
  • 陕西建设网网站集群网页设计软件vscode
  • 什么是网站空间信息win7在iis中新建一个网站
  • 营销型网站的功能沧州市青县建设局网站
  • 做i网站seo百度发包工具
  • 长沙企业网站开发微联讯点云南搜索引擎优化
  • 网站开发 一个页面多少钱公司网站建设须知