http协议详解及简单的http服务器实现

您所在的位置:网站首页 以下基于udp的协议中,默认端口号正确的是 http协议详解及简单的http服务器实现

http协议详解及简单的http服务器实现

2024-07-10 02:20| 来源: 网络整理| 查看: 265

http协议及简单的http服务器的实现 1.网络协议及网络版计算机实现2.HTTP协议2.1 URL2.2 Http协议报文2.3 Http请求的方法2.4 HTTP的状态码2.5 HTTP消息报头 3.GET和POST方法的区别4.实现一个简单的Http服务器

前言:程序员写的网络程序, 都是在应用层。所以应用层对于网络编程是一个很重要的部分,我们应该好好学习这部分的知识。

计算机网络基础知识扫盲:https://blog.csdn.net/hansionz/article/details/85224786 网络编程套接字(socket):https://blog.csdn.net/hansionz/article/details/85226345 Udp和Tcp通用服务器的实现:https://blog.csdn.net/hansionz/article/details/86358191

1.网络协议及网络版计算机实现

在扫盲博客中谈到协议是一种 "约定"。所有socket api的接口,在读写数据时, 都是按 "字符串"的方式来发送接收的。但是如果我们要传输一些 "结构化的数据",就必须要自己制定网络协议。

我们可以自己制定协议来实现一个网络版的计算器:

首先,我们应该制定一份共同的约定,既网络协议:

定义一个结构体表示运算数和运算方法定义一个结构体表示返回结果和状态值(表示返回结果的正确性)发送数据时将结构体按照规则转换成字符串, 接收到数据的时候再按照相同的规则把字符串转化回结构体。这个过程叫做"序列化" 和"反序列化"

我们可以将Tcp通用服务器做一个简单的修改:

//comm.h typedef struct Request { int x; int y; int op;//+-*/%--->12345 }Request_t; typedef struct Respon { int res; int flag; //0 1 2 }Respon_t; //tcp_server.hpp static void service(TcpSocket sock) { Request_t requ; Respon_t resp; for(;;){ memset(&requ, 0 ,sizeof(requ)); memset(&resp, 0, sizeof(resp)); sock.Recv(requ); resp.flag = 0; switch(requ.op){ case 1: resp.res = requ.x + requ.y; break; case 2: resp.res = requ.x - requ.y; break; case 3: resp.res = requ.x * requ.y; break; case 4: { if(requ.y == 0){ resp.flag = 1; }else{ resp.res = requ.x / requ.y; } } break; case 5: resp.res = requ.x % requ.y; break; default: resp.flag = 2; cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3