C#网络编程

来源:互联网 发布:用友进销存软件价格 编辑:程序博客网 时间:2024/05/21 21:34

网络基本概念

一。TCP面向连接传输协议

  1. 概念:TCP协议是面向连接的,两个主机(进程/exe),必须首先进行握手,建立连接。然后才可对实际数据进行发送。例如:A向B发送“woshizhongguoren”,则先知道B的位置(主机地址和端口号),然后发送一个不包含实际内容的请求报文,我们可将这个报文称之为“hello”,B收到“hello”后,就向A返回一个“hello”。随后进程A才向进程B发送实际数据“woshizhongguoren”
  2. 特点:a.全双工:A与B建立好连接后,则A可向B发送数据,B也可向A发送数据。
              b.点对点:一个TCP连接是两者之间的,一个连接将数据发送给多个接收方是不可能的。                                                                                                                  c.传输的内容是有序的,如A发送的字符串是“ABC”则B接收的字符串也是“ABC”
  3. 套接字:
  4. 即传输层为应用层开了一个小口,应用程序通过这个小口向远程发送数据,或者接收远程发送来的数据,如果你想写封邮件发给远方的朋友,那么你如何写信、将信打包,属于应用层,信怎么写,怎么打包完全由我们做主;而当我们将信投入邮筒时,邮筒的那个口就是套接字,在进入套接字之后,就是传输层、网络层等(邮局、公路交管或者航线等)其它层次的工作了。我们从来不会去关心信是如何从西安发往北京的,我们只知道写好了投入邮筒就OK了。
  5. .NET提供两个类,对套接字的编程进行了封装,使使用更加方便,如TcpClient和TcpListener,它与套接字的关系如下:
  6. TcpListener用于接收请求,TcpClient 用于接收和发送数据流。这幅图的意思是TcpListener持续地保持对端口的侦听,一旦收到一个连接请求后,就可以获得一个TcpClient对象,而对于数据的发送和接收都有TcpClient去完成。此时,TcpListener并没有停止工作,它始终持续地保持对端口的侦听状态。
  7. 当它们想要进行对话时,总是需要有一方发起连接,而另一方则需要对本机的某一端口进行侦听。而在侦听方收到连接请求、并建立起连接以后,它们之间进行收发数据时,发起连接的一方并不需要再进行侦听。因为连接是全双工的,它可以使用现有的连接进行收发数据。而我们前面已经做了定义:将发起连接的一方称为客户端,另一段称为服务端,则现在可以得出:总是服务端在使用TcpListener类,因为它需要建立起一个初始的连接
0 0
原创粉丝点击