解析C# Socket编程实现访问网络的原理

开发 后端
C# Socket编程实现访问网络的具体实现是如何的呢?我们在C# Socket编程的学习中需要掌握那些相关的内容呢?那么本文就向你介绍具体的内容。

在C# Socket编程学习中,我们知道MS为我们提供了System.Net.Sockets命名空间,里面包含了Socket类。那么C# Socket是如何实现对网络的访问呢?让我们来看看基本的原理。

C# Socket编程1.C# Socket的概念解释

Windows中的很多东西都是从Unix领域借鉴过来的,Socket也是一样。在Unix中,socket代表了一种文件描述符(在Unix中一切都是以文件为单位),而这里这个描述符则是用于描述网络访问的。什么意思呢?就是程序员可以通过socket来发送和接收网络上的数据。你也可以理解成是一个API。有了它,你就不用直接去操作网卡了,而是通过这个接口,这样就省了很多复杂的操作。

C# Socket编程2.C# Socket访问网络:

C# Socket访问网络需要的条件(与编程有关的部分):a. 要确定本机的IP和端口,socket只有与某一IP和端口绑定,才能发挥强大的威力。b. 得有协议吧(否则谁认得你这发送到网络的是什么呀)。想要复杂的,我们可以自己来定协议。但是这个就不在这篇里提了,我这里介绍两种大家最熟悉不过的协议:TCP & UDP。(别说你不知道,不然...不然...我不告诉你)

如果具备了基本的条件,就可以开始用它们访问网络了。来看看步骤吧:

a. 建立一个套接字

b. 绑定本机的IP和端口

c. 如果是TCP,因为是面向连接的,所以要利用ListenO()方法来监听网络上是否有人给自己发东西;如果是UDP,因为是无连接的,所以来者不拒。

d. TCP情况下,如果监听到一个连接,就可以使用accept来接收这个连接,然后就可以利用Send/Receive来执行操作了。而UDP,则不需要accept, 直接使用SendTo/ReceiveFrom来执行操作。(看清楚哦,和TCP的执行方法有区别,因为UDP不需要建立连接,所以在发送前并不知道对方的IP和端口,因此需要指定一个发送的节点才能进行正常的发送和接收)

e. 如果你不想继续发送和接收了,就不要浪费资源了。能close的就close吧。

如果看了上面文字,你还不清楚的话,就来看看图好了:

面向连接的套接字系统调用时序 

面向连接的套接字系统调用时序

无连接的套接字系统调用时序 

无连接的套接字系统调用时序

本文转自:http://www.cnblogs.com/freeliver54/archive/2009/01/04/1368173.html

C# Socket编程中C# Socket访问网络的基本原理和相关概念就向你介绍到这里,希望对你了解和学习C# Socket编程以及C# Socket访问网络的操作有所帮助。

【编辑推荐】

  1. 浅析C# Dispose方法模式的建立
  2. C# http分析常用工具浅析
  3. C#HTTP文件传输的实现浅析
  4. C# HttpWebRequest提交数据方式浅析
  5. C#抓取网页程序的实现浅析
责任编辑:仲衡 来源: 博客园
相关推荐

2010-03-03 16:19:29

Python Sock

2009-08-31 18:17:32

C#接口编程

2009-09-07 15:27:04

C# MessageB

2009-08-31 17:16:12

C#实现接口

2009-09-02 16:30:20

C#定义数组

2009-08-31 18:01:41

C#接口事件

2009-08-20 16:33:44

Socket异步通讯

2012-09-24 15:35:24

C#网络协议UDP

2012-09-24 15:13:50

C#网络协议TCP

2009-02-20 09:50:29

C#方法重载编程

2009-09-09 13:18:10

C# TextBox滚C# TextBox

2009-08-21 17:53:25

C#网络编程客户端程序

2012-09-25 11:28:38

C#网络协议UDP

2012-09-25 15:02:50

C#网络协议

2009-08-25 11:10:20

C#编程实现显示XML

2009-08-27 17:14:36

C# Socket

2009-08-18 16:45:40

C# Raw Sock

2009-08-03 16:45:02

C#异步Socket

2012-09-24 14:03:58

C#网络协议C

2013-03-27 13:26:04

Android开发Socket
点赞
收藏

51CTO技术栈公众号