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

哪家网站游戏做的比较好的微信小程序开发大赛

哪家网站游戏做的比较好的,微信小程序开发大赛,哪个网站可以做app界面,一般网站的前台功能模块第一步#xff1a;新建项目 1、打开VS点击创建新项目 2、选择空项目并点下一步#xff08;切记不能选错项目类型#xff09; 3、填写项目名称和路径#xff0c;点击创建即可 新建好后项目是这样的比较干净 4、右击源文件#xff0c;点击添加#xff0c;新建http.cpp文件…第一步新建项目 1、打开VS点击创建新项目 2、选择空项目并点下一步切记不能选错项目类型 3、填写项目名称和路径点击创建即可 新建好后项目是这样的比较干净  4、右击源文件点击添加新建http.cpp文件 第二步前期准备 在http.cpp最上面引入依赖并撰写main方法打印错误日志的方法 #includestdio.h #includestring.h #includeWinSock2.h #includesys/types.h #includesys/stat.h #pragma comment(lib,WS2_32.lib) #define PRINTF(str) printf([%s - %d]#str%s,__func__,__LINE__,str);//打印错误日志 void error_die(const char* str) {perror(str);exit(1);}int main(void) {return 0; } 第三步网络初始化 初始化可以分为五步1、网络通讯初始化2、创建套接字3、绑定端口4、绑定套接字5、创建监听队列 代码实现如下 int startup(unsigned short *port) {//1、网络通讯初始化WSADATA data;int res WSAStartup(MAKEWORD(1,1), data);if (res) {error_die(init fail);}//2、创建套接字int server_socket socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);if (server_socket -1) {error_die(sock create fail);}//3、绑定端口int opt 1;res setsockopt(server_socket,SOL_SOCKET,SO_REUSEADDR,(const char*) opt, sizeof(opt));if (res) {error_die(port bing fail);}//4、绑定套接字struct sockaddr_in server_addr;memset(server_addr,0,sizeof(server_addr));server_addr.sin_family AF_INET;server_addr.sin_port htons(*port);server_addr.sin_addr.s_addr htonl(INADDR_ANY);res bind(server_socket,(struct sockaddr*) server_addr, sizeof(server_addr));if (res0) {error_die(sock bing fail);}//5、创建监听队列int nameLen sizeof(server_addr);if (*port 0) {res getsockname(server_socket, (struct sockaddr*)server_addr,nameLen);if (res) {error_die(dynamic sock create fail);}*port server_addr.sin_port;}res listen(server_socket, 5);if (res 0) {error_die(listen queque create fail);}return server_socket;};main方法修改如下: int main(void) {//1、初始化unsigned short port 8000;int server_sock startup(port);printf(http have benn started ,listening [%d] port...,port);return 0; } 第四步处理用户请求 1、报文背景知识 浏览器发起新的访问时会向服务器端发送一个请求报文。例如在浏览器地址输入 127.0.0.1:8000 回车后服务器端收到的完整报文如下 GET / HTTP/1.1\n Host: 127.0.0.1:8000\n Connection: keep-alive\n Cache-Control: max-age0\n Upgrade-Insecure-Requests: 1\n User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36\n Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/avif,image/webp,image/apng,*/*;q0.8,application/signed-exchange;vb3;q0.9\n Sec-Fetch-Site: none\n Sec-Fetch-Mode: navigate\n Sec-Fetch-User: ?1\n Sec-Fetch-Dest: document\n Accept-Encoding: gzip, deflate, br\n Accept-Language: zh-CN,zh;q0.9\n \n 请求报文由4四个部分组成请求行、请求头部行、空行、请求数据。具体格式如下 2、具体处理 具体处理代码如下 //从指定的客户端套接字读取一行数据保持到buff中返回实际读取到了字节数 int get_line(int sock, char* buff, int size) {char c 0;int i 0;while (i size - 1 c ! \n) {int n recv(sock, c, 1, 0);if (n 0) {if (c \r) {n recv(sock, c, 1, MSG_PEEK);if (n 0 c \n) {recv(sock, c, 1, 0);}else {c \n;}}buff[i] c;}else {c \n;}}buff[i] 0;return 0; }//向指定套接字发送一个未支持提示还没有实现的错误页面 void unimplement(int client) {char buf[1024];sprintf(buf, HTTP/1.0 501 Method Not Implemented\r\n);send(client, buf, strlen(buf), 0);sprintf(buf, SERVER_STRING);send(client, buf, strlen(buf), 0);sprintf(buf, Content-Type: text/html\r\n);send(client, buf, strlen(buf), 0);sprintf(buf, \r\n);send(client, buf, strlen(buf), 0);sprintf(buf, HTMLHEADTITLEMethod Not Implemented\r\n);send(client, buf, strlen(buf), 0);sprintf(buf, /TITLE/HEAD\r\n);send(client, buf, strlen(buf), 0);sprintf(buf, BODYPHTTP request method not supported.\r\n);send(client, buf, strlen(buf), 0);sprintf(buf, /BODY/HTML\r\n);send(client, buf, strlen(buf), 0);}//向指定套接字发送一个未支持提示还没有实现的错误页面 void not_found(int client) {char buf[1024];sprintf(buf, HTTP/1.0 404 NOT FOUND\r\n);send(client, buf, strlen(buf), 0);sprintf(buf, SERVER_STRING);send(client, buf, strlen(buf), 0);sprintf(buf, Content-Type: text/html\r\n);send(client, buf, strlen(buf), 0);sprintf(buf, \r\n);send(client, buf, strlen(buf), 0);sprintf(buf, HTMLTITLENot Found/TITLE\r\n);send(client, buf, strlen(buf), 0);sprintf(buf, BODYPThe server could not fulfill\r\n);send(client, buf, strlen(buf), 0);sprintf(buf, your request because the resource specified\r\n);send(client, buf, strlen(buf), 0);sprintf(buf, is unavailable or nonexistent.\r\n);send(client, buf, strlen(buf), 0);sprintf(buf, /BODY/HTML\r\n);send(client, buf, strlen(buf), 0);}//发送响应的头信息 void headers(int client) {char buff[1024];strcpy(buff, HTTP/1.0 200 OK\r\n);send(client, buff, strlen(buff), 0);strcpy(buff, Server:MyHttpd/0.1\r\n);send(client, buff, strlen(buff), 0);strcpy(buff, Content-type:text/html\n);send(client, buff, strlen(buff), 0);strcpy(buff, \r\n);send(client, buff, strlen(buff), 0);}//发送文件 void cat(int client,FILE* resource) {char buff[4096];int count 0;while (1) {int ret fread(buff, sizeof(char), sizeof(buff), resource);if (ret 0) {break;}send(client, buff, ret, 0);count ret;}printf(total send [%d] to client\n,count); }void server_file(int client,const char* fileName) {char numchars 1;char buff[1024];while (numchars 0 strcmp(buff, /n)) {numchars get_line(client, buff, sizeof(buff));PRINTF(buff);}FILE* resource fopen(fileName,r);if (resourceNULL) {not_found(client);}else {//发送头信息headers(client);//发送文件cat(client, resource);printf(file send success);}fclose(resource);}DWORD WINAPI accept_request(LPVOID arg) {char buff[1024];int client (SOCKET)arg;//1、获取第一行int numchars get_line(client, buff,sizeof(buff));PRINTF(buff);char method[255];int j 0 ,i 0;while (!isspace(buff[j])i sizeof(method)-1) {method[i] buff[j];}method[i] 0;PRINTF(method);//2、检查请求方法是否支持if (stricmp(method,GET) stricmp(method, POST)) {//向浏览器返回错误提示页面unimplement(client);return 0;}//3、解析资源路径char url[255];i 0;while (isspace(buff[j]) j sizeof(buff)) {j;}while (!isspace(buff[j]) sizeof(url)-1 j sizeof(buff)) {url[i] buff[j];}url[i] 0;PRINTF(url);char path[512] ;sprintf(path, htdocs%s, url);if (path[strlen(path)-1]/) {strcat(path, index.html);}PRINTF(path);struct stat status ;if (stat(path,status)-1) {//把请求包里的东西读完while (numchars0strcmp(buff,/n)) {numchars get_line(client, buff, sizeof(buff));}PRINTF(buff);not_found(client);}else {if ((status.st_mode S_IFMT)S_IFDIR) {strcat(path, index.html);}server_file(client,path);}closesocket(client);return 0; }github地址 https://github.com/1756336885/miniWeb.git gitee地址 miniWeb: 迷你版的web,用C撰写后期会添加数据库中间件相关的操作 参考文章 2-创建项目_哔哩哔哩_bilibili C语言手写HTTPD网站服务器_126775241csdn-CSDN博客
http://www.zqtcl.cn/news/3107/

相关文章:

  • 免费素材库短视频素材网站建设旅游网站的意义
  • 上海市各区建设局网站研发项目管理系统
  • 外贸网站有哪些?重庆网站优化seo公司
  • 广州网站建设推广公司手机百度浏览器
  • seo案例网站建设哪家好国微 网站建设
  • 用asp.net做的网站模板下载大型网站建设规范
  • 收录很快的推广网站网络服务单位招标
  • 淮北住房和城乡建设局门户网站工程建设网站
  • 网站怎么做宣传wordpress无法发送邮件
  • xml做网站织梦网站提示保存目录数据时报
  • wordpress 主题制件福州seo按天扣费
  • 芜湖小学网站建设网站开发交易
  • 网站开发项目立项报告范文杭州洛可可设计公司
  • 网站建设模板平台上海做网站设计公司
  • 做快餐 承包食堂的公司网站网络营销专业
  • php 大型网站开发教程山东建设工程管理局网站
  • 简述网站开发的5个步骤如何制作一个网页链接
  • 网站关键词提升wordpress添加用户
  • 四川建设厅官方网站证书查询企业网站的建设企业
  • 网页设计制作网站模板wordpress本地更新
  • 做提升自己的网站南京小程序建设
  • 网站开发智能化方向北京seo排名
  • 西安网站排名分析网站建设全包广州
  • 青州住房建设局网站网站集约化建设的意义
  • 怎么用ps做网站超链接金融企业网站建设
  • 手工活接单在家做有正规网站吗华为企业管理软件
  • c 网站开发怎么弹出输入框wordpress视频打赏
  • 动漫设计与制作主修课程网站怎么关键字优化
  • 免费网站为何收录比较慢网站建设行业淘宝装修模板
  • 崇安网站建设asp 网站打不开