网络编程C#篇(一):TCP/UDP
2007-08-09 19:14
232 查看
由于最近的爱好,重新被激发,所以开始,写关于网络编程方面的知识。近段主要想写一下C#方面的网络编程,有什么不对,请高手们指正。
基础篇:
关于这方面的文章主要是一个理论知识,重在理解。由于,本人的文笔有限。所以,有什么不对,还请大家更正。
网络编程主要是用到了两个协议:TCP和UDP
TCP编程的特点:
对于TCP,要记住的最重要的事情是它是一个面向链接的协议。两个设备之间一旦已经存在链接,就会形成一个可靠的数据流,保证数据从一个设备准确的移送到另一个设备。虽然使用TCP的用户不用担心数据的丢失和错位。但是,使用TCP编程的时候,需要的考虑的大问题是:缓冲区。
由于TCP必须保证数据的完整性,所以,在从远程设备收到“已收到数据”的肯定的应答信息之前,它一直把所有发送的数据都存放在一个本地缓冲器中。同样地,当从网络接收数据的时候,TCP也必须有一个接收数据的本地缓冲器,以保证在把数据递送给应用程序之前所有的数据块是按顺序接收的。由于这个单独的TCP缓冲器,在用户程序与远程主机上目的程序之间移动数据操作起来显得比预期的困难一些。所以,无论是发送方还是接收方数据在发送或者接收的时候都会先放在缓冲区中。但是,TCP不保留数据消息的界线(数据块之间的边界),即缓冲区中的数据块被作为一个包发送。所以编程者必须在自己的网络程序中加以弥补。
UDP编程的特点:
创建UDP就是为了解决TCP的消息边界问题。UDP保留了从应用程序发送到网络上的所有消息的数据边界。由于UDP的特殊设计,不担心可靠数据的传输问题,它不需要使用本地缓冲器保留发送的或接收的数据。代替的做法是,当从应用程序接收到消息时,每条消息都作为一个单独的包转发。同样,从网络上收到的每条消息也作为一个单独的包转发给应用程序。UDP在网络包中保留了消息的边界。但是,由于UDP不保证数据的传递,所以如果涉及到数据到达目的地的问题,用户应用程序必须执行那种功能。因为一台设备发出了UDP数据包并不一定意味着接收设备收到数据包,所以用户必须保证用户的程序能够处理丢失包的问题。
当程序需要分清服务器和客户机的时候,最好使用TCP协议,而UDP一般是在主次不是分的很清楚(即关系平等)的时候用到。
基础篇:
关于这方面的文章主要是一个理论知识,重在理解。由于,本人的文笔有限。所以,有什么不对,还请大家更正。
网络编程主要是用到了两个协议:TCP和UDP
TCP编程的特点:
对于TCP,要记住的最重要的事情是它是一个面向链接的协议。两个设备之间一旦已经存在链接,就会形成一个可靠的数据流,保证数据从一个设备准确的移送到另一个设备。虽然使用TCP的用户不用担心数据的丢失和错位。但是,使用TCP编程的时候,需要的考虑的大问题是:缓冲区。
由于TCP必须保证数据的完整性,所以,在从远程设备收到“已收到数据”的肯定的应答信息之前,它一直把所有发送的数据都存放在一个本地缓冲器中。同样地,当从网络接收数据的时候,TCP也必须有一个接收数据的本地缓冲器,以保证在把数据递送给应用程序之前所有的数据块是按顺序接收的。由于这个单独的TCP缓冲器,在用户程序与远程主机上目的程序之间移动数据操作起来显得比预期的困难一些。所以,无论是发送方还是接收方数据在发送或者接收的时候都会先放在缓冲区中。但是,TCP不保留数据消息的界线(数据块之间的边界),即缓冲区中的数据块被作为一个包发送。所以编程者必须在自己的网络程序中加以弥补。
UDP编程的特点:
创建UDP就是为了解决TCP的消息边界问题。UDP保留了从应用程序发送到网络上的所有消息的数据边界。由于UDP的特殊设计,不担心可靠数据的传输问题,它不需要使用本地缓冲器保留发送的或接收的数据。代替的做法是,当从应用程序接收到消息时,每条消息都作为一个单独的包转发。同样,从网络上收到的每条消息也作为一个单独的包转发给应用程序。UDP在网络包中保留了消息的边界。但是,由于UDP不保证数据的传递,所以如果涉及到数据到达目的地的问题,用户应用程序必须执行那种功能。因为一台设备发出了UDP数据包并不一定意味着接收设备收到数据包,所以用户必须保证用户的程序能够处理丢失包的问题。
当程序需要分清服务器和客户机的时候,最好使用TCP协议,而UDP一般是在主次不是分的很清楚(即关系平等)的时候用到。
相关文章推荐
- 剖析网络编程-TCP&UDP
- Java网络编程UDP与TCP协议
- 网络编程-TCP与UDP
- 【java面试系列之网络编程】TCP和UDP的区别、TCP协议的三次握手和四次挥手、TCP协议的通信状态、网络编程时的同步、异步、阻塞、非阻塞、进程间的通信方式、TCP的流量控制和拥塞控制
- 基于TCP,UDP的网络编程总结
- android开发第四弹--网络编程之socket tcp/ip udp http(一)
- Python 网络编程操作TCP/UDP 初探(一)
- 运输层UDP、TCP网络概念辨析以及socket编程流程图示
- linux网络编程之TCP/IP基础(五):分析一帧基于UDP的TFTP协议帧
- Android 网络编程——IP、TCP、UDP
- C++ TCP/UDP 网络编程笔记
- [windows网络编程]tcp/udp编程初步详解
- 网络知识 及 TCP、UDP编程实现过程
- java网络编程基础夯实06-TCP,UDP,HTTP,Socket简介
- unix 网络编程---select回射TCP,UDP
- 【Unity3D自学记录】网络编程之TCP&UDP的区别
- 网络编程之TCP/UDP及其流程比较
- Java 网络编程之 TCP/UDP
- 【Linux网络编程】TCP 和 UDP 数据报格式详解
- 网络编程——基于TCP的程序设计和基于UDP的程序设计