客户端发送命令给服务端,要求服务端接收文件,服务端返回一个值告诉客户端准备就绪。此时,客户端从要传送的文件中读取4k,发送给服务端,服务端接收后返回一个值告诉客户端,客户端继续读取4k发送。以此类推,最后客户端发送一个命令给服务端,告诉服务端文件发送完毕。服务端再次返回一个响应值。整个过程完毕。问题1:请问这个思路是否正确,若正确哪里需要改进,若不正确应该如何构思?
问题2:每次发送4k是否合适,还是要看网络状况重新定大小?
问题3:怎么样避免客户端发送过快,服务端来不及接收。或者客户端发送过慢,浪费带宽的问题?
问题4:服务端怎样区别客户端发送过来的是数据还是命令?每个问题25分,期待大家给小弟指点迷津,谢谢
问题2:每次发送4k是否合适,还是要看网络状况重新定大小?
问题3:怎么样避免客户端发送过快,服务端来不及接收。或者客户端发送过慢,浪费带宽的问题?
问题4:服务端怎样区别客户端发送过来的是数据还是命令?每个问题25分,期待大家给小弟指点迷津,谢谢
解决方案 »
- 请教delphi7的TPieSeries组件在哪?
- 封装 TMyTxt = class(TCustomMaskEdit) 后,它的下一控制不会获得焦点,如何解决?
- 散分~——关于机子的配置
- adoquery中的极简单语句问题,在线给分!!!
- 我在窗体上添加一个控件,并编了响应代码,但是我不用控件时,把它删除,可代码依然在程序中,如何解决?
- 奇怪的问题,关于一个简单的表问题?
- 关于Hint
- delphi新手问题,麻烦解答一下,谢谢
- 这条SQL语句出错的很奇怪啊!
- :算法程序,Delphi、tp速度能差多少????
- 三层中关于RichText的处理问题,怎么会自动清空!?
- 新手提问,请多关照,谢谢
2.个人觉得还可以了,(建议1024字节)
3.不懂
4.改写TCP结构,你可以自己构造一个结构,里面有一个用来存储命令的,这样就可以了,刚好就跟1.对应起来。
2.大小可变,通过上面的意思,有客户端定义块大小。
3.客户端发送过快,这个不会,因为,每次服务器都进行了相应,服务器部分来完成负荷控制。一回一应,应该不会浪费吧。
4.命令和数据是好协议区分的协议一般包含
头,控制码,长度,数据,校验,尾
入
FE,0c,00,00,CRC,18
头 控 长度 校验 尾
以上
FE是头,0C是控制码
如下:
01,读命令
02,写命令
03,错误
04,成功!!
这个就可以区分了当然具体协议还要复杂点 ,你可以参看一些协议方面的书籍参考。
FF 00 FF 00 F0 F0 F0 F0 FF 00 FF 00 F0 F0 F0 F0(01)表示成功。FF 00 FF 00 F0 F0 F0 F0 FF 00 FF 00 F0 F0 F0 F0(02)如此协议
标志码没有必要像你这样长太浪费,如果都是pc还好,那么有一方面是采用gprs无线方式呢
1k 3分钱呢记得哦,我们是有校验的,16位的crc校验,不怕误码...
特征码,重复问题在tcp应用层也不用太在意,tcp会自动将发送来的包组合,一般不分包
即使分,那么我们还有长度界定,数据块始终是包含在控制码之中,所以没必要大动干戈
而且也不适合理解。网上的协议格式很多啊,楼主去查查就可以了。