TCP协议发数据包

Terryjia 2008-11-09 08:22:46
举个例子服务器发送一个数据包给客户端。
包的结构是(同步头(2字节),功能码(1字节),特征数据(1),数据长度(n),数据域(n),校验码(2),结束码(2))
客户端根据功能码来执行不同的模块,请问代码的结构怎么样比较合理?包是用TCP协议发。
...全文
290 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Terryjia 2008-11-20
  • 打赏
  • 举报
回复
up
Terryjia 2008-11-19
  • 打赏
  • 举报
回复
现在问题是:要执行一条命令就要写2个函数,一个函数为发送数据到服务器,服务器返回数据后被SELECT收到 然后在根据功能码
跳转到第2个函数判断执行结果。有办法在一个函数里面写吗?写这样的程序需要用到线程的一些东西吗?谢谢大家了。。功能都差
不多了 现在就模块之间的通信协议不太明白,我这么写结构是不是太乱了 而且以后不好封装DLL。还有对DLL里面怎么使用SELECT
的窗口句柄和消息参数,不支持消息映射吧?
simplebird 2008-11-18
  • 打赏
  • 举报
回复
在客户端要考虑拆包问题。TCP这点不爽。
西山小月 2008-11-18
  • 打赏
  • 举报
回复
怎么都行,看自己方便就行,没有固定模式
achao9527 2008-11-18
  • 打赏
  • 举报
回复
也许还有一大堆n变态的服务器常量。交给测试部那帮白痴写吧。--!
achao9527 2008-11-18
  • 打赏
  • 举报
回复
目前我也在研究服务器功能。说一下我自己个人的思路。我觉得仿ascii表,比较好。
服务器定好一个结构(也许是n个)。
当客户连接请求时候
switch


然后是结构。。。。
初步设想。。。
没有经验.
Terryjia 2008-11-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xsc2001 的回复:]
发送很好办,最关键还是看你怎么分折数据包的问题,建议你把一个完整的数据发成三个包发送,信息头、数据体和信息尾三个部分。
信息头包括:同步头(2字节),功能码(1字节),特征数据(1)及数据长度(n),总共8个字节。
数据体包括:实际数据长度由信息头中的长度项决定。
信息尾包括:校验码(2),结束码(2),共4个字节。
而信息头和信息尾是固定长度的,数据体是变长的,可以根据信息头中的长度项来决定。


[/Quote]
为什么要分别接收那 一次发送完毕不是很好。要是分多次发的话要用到多线程跟同步的知识吧?
好多函数都是发送完数据后根据返回来的数据来判断程序的执行的
Terryjia 2008-11-12
  • 打赏
  • 举报
回复
自己UP下
Terryjia 2008-11-10
  • 打赏
  • 举报
回复
就是这个代码的结构啊
比如收到数据包后是
switch(功能码)
case 功能码1:
……//实现功能码1的函数
case 功能码2:
……//实现功能码2的函数
这样的大结构吗?我感觉这样的结构不是很好,以后封装是不是会不太方便?
如果不好的话有什么好的结构吗?
blackcat242 2008-11-09
  • 打赏
  • 举报
回复
代码结构怎么合理是什么意思?
cnzdgs 2008-11-09
  • 打赏
  • 举报
回复
“代码结构”是什么意思?上面的描述似乎与代码结构没有什么联系,如果说收发数据的方法,只要客户端先接收包头,然后根据包头中的长度来接收后面的数据就可以。
blackcat242 2008-11-09
  • 打赏
  • 举报
回复
代码结构怎么合理是什么意思?
xsc2001 2008-11-09
  • 打赏
  • 举报
回复
发送很好办,最关键还是看你怎么分折数据包的问题,建议你把一个完整的数据发成三个包发送,信息头、数据体和信息尾三个部分。
信息头包括:同步头(2字节),功能码(1字节),特征数据(1)及数据长度(n),总共8个字节。
数据体包括:实际数据长度由信息头中的长度项决定。
信息尾包括:校验码(2),结束码(2),共4个字节。
而信息头和信息尾是固定长度的,数据体是变长的,可以根据信息头中的长度项来决定。

接收到先接收固定长度的信息头,然后再根据长度信息接收数据体,最后再接收信息尾。注意接收时要分别接收。
gellf 2008-11-09
  • 打赏
  • 举报
回复
发送端/接收端:
发送/接受数据模块(传输流中抓取有效包,关键看你怎么发送,N条组合还是一条一组合)
数据包生成/解析模块(按功能码发送给不同执行模块处理特征数据,数据域)
数据域的生成/实现模块

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧