TCP/IP编程中, 大家一般都使用什么样风格的协议呢? 交流一下. :)
解决方案 »
- 请教个UDP服务器的问题?
- Vista 是怎样对窗体进行AeroGlass处理的 ? 它把我客户区域的都透明处理了
- VC++中的注释规范
- 《经典游戏程序设计》 里的扫雷,有几句话不懂怎么操作。麻烦大家看看
- 回馈社会,提高本版人气送200分
- 有没有较好的工具能监测哪些组件未被释放?
- 线程传参数问题??
- 动态创建窗口的问题
- 在VC的MFC编写串口通信程序中怎么设置一个按钮发送一个数据
- 我在EDIT控件中选中一串字符串,点击“删除”后,该字符串字体发生变化,加了删除线,请问如何完成,超级急,
- 大家帮我看一下:我明明包含了头文件,为什么vc6的编译器还要出现这样的错误呢?
- 紧急求救Macintosh开发,谁做个Macintosh下的多线程开发
要用连接的用TCP,无连接的用UDP,路由用IP,
传输层使用TCP协议
网络层使用IP协议。
关于UDP他是面向非连接的,对于UDP数据报的可靠性只能在应用层由用户自己控制,其报文头中的检错和纠错码只能保证收到的包中的数据;如果要保证UDP数据报能够接受就必须自己定义回应包。如发送方经过一段时间没有收到回应包,应认为数据没有被收到,需要重发。
协议实现后,上层的应用就不用管底层的传输细节,调用API就可以传输数据和文件
一般如果既有文件又有数据,首先发说明信息,然后发文件(分成一段一段),然后发数据,最后收确认信息.因为TCP协议不分段,所以一般有一个固定的内层格式.如包头(长度+类型)+实际数据+结束符(不一定有)
client->server: 2 1 0(这三个字接为协议字) 1000000(QQF号码)
server->client: 2 2 0(这三个字接为协议字) 0(表示登陆成功)
QQ的文字消息发送(udp):
client->server: 3 1 0(这三个字接为协议字) 7(消息的长度,四个字节) "message"(消息)
server->client: 3 2 0(这三个字接为协议字) 7(消息的长度,四个字节)"message"(消息发送成功)自定义的协议一般都是这样,选用tcp 还是 udp协议,看你的应用需要,比如对于一些数据量比较大(文件的传输,语音数据的传输等等),一般选用udp,对于登陆这样的协议,因为要确保登陆信息正确的发送到服务器,所以采用tcp,向发文本信息这类,采用udp,因为计算发送一次文本信息失败,也无伤大雅,不过对于udp你要自己设置超时和重发的机制!
好的协议有助于你好的实现. 为什么HTTP, STMP, POP3, FTP等协议是这个样子. 原因如何等等, 大家继续. :)