C# socket编程第一篇

最近做一项目,有用到socket通信,因为以前没写过通信,所以这次也是一边写,一边学。在这把学习的过程记录下来,方便其他的园友学习分享。因为本次我选择的是SOCKET+UDP,所以会以UDP来讲解,同时demo也会是udp的,不过tcp的demo到时也会贴出来。

 先来了解下什么是SOCKET

  • 所谓socket通常也称作“套接字”,应用程序通常通过“套接字”向网络发出请求或者应答网络请求。
  • 在Internet上有很多这样的主机,这些主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务
  • Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。

SOKCET的介绍其实很多,有兴趣的可以去多了解下,socket在实现通信的时候用到的协议有TCP和UDP协议。既然有两个协议,那么该怎么选择呢?简单点说。UDP处理的细节比TCP少。UDP不能保证消息被传送到(它也报告消息没有传送到)目的地。UDP也不保证数据包的传送顺序。UDP把数据发出去后只能希望它能够抵达目的地。

 TCP优缺点:

  优点:

  1.TCP提供以认可的方式显式地创建和终止连接。

  2.TCP保证可靠的、顺序的(数据包以发送的顺序接收)以及不会重复的数据传输。

  3.TCP处理流控制。

  4.允许数据优先

  5.如果数据没有传送到,则TCP套接口返回一个出错状态条件。

  6.TCP通过保持连续并将数据块分成更小的分片来处理大数据块。—无需程序员知道

  缺点: TCP在转移数据时必须创建(并保持)一个连接。这个连接给通信进程增加了开销,让它比UDP速度要慢。

  UDP优缺点:

  1.UDP不要求保持一个连接

  2.UDP没有因接收方认可收到数据包(或者当数据包没有正确抵达而自动重传)而带来的开销。

  3.设计UDP的目的是用于短应用和控制消息

  4.在一个数据包连接一个数据包的基础上,UDP要求的网络带宽比TDP更小。

准备工作基本做完了,下面要开始进入到程序的编写阶段