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

iis能建设网站吗访问一个网站的过程

iis能建设网站吗,访问一个网站的过程,wordpress 数据库挂马,建设网站是否需要一个主机标题遵循原书标题 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://www.dtcms.com/a/605180.html

相关文章:

  • 株洲做网站哪家好网络推广哪个平台好
  • .net讲解
  • Temu欧洲站大规模下架,跨境卖家如何迎战合规风暴?
  • LMDeploy 在 Docker 容器中部署模型
  • MCU单片机,常用32位单片机,低功耗单片机MM32L系列
  • 今天,又聊了棋牌室、会议室和高尔夫...分享我的开发共享空间系统创业日记
  • vue项目配置可以让用户自己动态修改baseURL
  • GitPuk入门到精通 - 如何进行分支管理
  • MySQL 删除数据库指南
  • 常用网站开发工具详细分类与解析
  • 《Zephyr RTOS 深度学习指南与生成式AI结合方法探讨》 第七章:驱动与抽象篇
  • seo 网站改版简述网站建设优劣的评价标准
  • 有没有免费做企业网站的10黄页网站建设
  • 栈与队列入门:定义、操作及完整 C 语言实现教程
  • vue3 + antd + print-js 实现打印功能(含输出PDF)
  • 主动交互和情境感知,AI 硬件是脱离手机屏幕掌控的蓝海机会丨硬件和端侧模型专场@RTE2025 回顾
  • NeurIPS2025丨MIT提出自动化科学发现工具,AutoSciDACT对天文/物理/生物医学等异常数据强敏感
  • Java: 为PDF批量添加图片水印实用指南
  • 使用 Python 将 PDF 转换为 PNG
  • docker desktop 限制wsl使用内存空间
  • 学校网站的建设论文WordPress订阅下载插件
  • 内连接与隐式内连接:SQL连接的本质解析
  • 内存网盘 - Go语言实现的WebDAV内存文件系统
  • 【复习408】操作系统进程描述与控制详解
  • 实战1: worldskills3.vmem
  • redis-manger管理平台
  • 基于SpringBoot与Vue的海外理财系统设计与实现
  • 测开学习DAY28
  • android短视频sdk,灵活集成,快速上线!
  • Android AIDL 的详细讲解和实践指南