C语言Server和服务器之间的通信协议采用包头Header+包体Body的形式,能够具体实现这个吗?

C语言Server和服务器之间的通信协议采用包头Header+包体Body的形式,能够具体实现这个吗?,第1张

网络之间的数据传递 都可以认为是数据流的传递。具体什么意思呢?所谓协议,说白了 你就是发送一个结构体过去。你定义如下结构体
//定义包头
struct PacketHeader{
int uLen;//包长
int uOpCode;//协议号(项目实战中常规做法。)
};
//定义一个协议。传输 int 变量的值过去。
struct Protrol{
PacketHeader head;//协议头
int nBody; //协议身体,就是我们要传的值。
};
然后发送的时候这么发送:
Protrol a;
anBody = 1;
auLen = sizeof(Protrol );
SendBuffer((const char)&a,auLen);
接收端也是如此,根据Opcode的值,将收到的数据流强制类型转换成Protrol的指针就可以了。
比如收到的buff是:const char szBuff[1024]={0};
const Protrol pMsg = (const Protrol)szBuff;
这样就可以了。pMsg -> nBody ;就是你要的值。
现阶段 你学习到这个程度就够了,以后你就会发现一些问题,比如内存对齐 比如O2优化的问题。
尽管如此 这也是一个常用方法,或许你们教科书就是这么写的。这种方式非常简单。就这样。

C语言开发服务器可以说是一件非常困难和辛苦的事情。首先你需要对网络编程非常熟悉,因为服务器需要通过网络进行访问,它必须架构在网络协议上,然后你需要对网络协议和相关的程序设计接口非常了解,比如socket编程、>一、 填空题
___ IP地址____用来标志网络中的一个通信实体的地址。通信实体可以是计算机,路由器等。
统一资源定位符URL是指向互联网“资源”的指针,由4部分组成:协议、存放资源的主机域名、__端口___和资源路径和文件名。
URL 是统一资源定位器的简称,它表示Internet上某一资源的地址。
在Socket编程中,IP地址用来标志一台计算机,但是一台计算机上可能提供多种应用程序,使用 端口 来区分这些应用程序。
在Java Socket网络编程中,开发基于TCP协议的服务器端程序使用的套接字是 ServerSocket 。
在Java Socket网络编程中,开发基于UDP协议的程序使用的套接字是 DatagramSocket 。
二、 选择题
1以下协议都属于TCP/IP协议栈,其中位于传输层的协议是(AD)。(选择二项)
A TCP
B>

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13507739.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-21
下一篇 2023-08-21

发表评论

登录后才能评论

评论列表(0条)

保存