ASP.NET Socket网络编程

发布时间:2013-11-29    发布:    分类:技术文档

讯博网络:http://www.cenbel.com/

1.Socket相关概念

(1) Socket的英文原义是“孔”或者“插座”,作为进程通信机制,取后一种意思,通常也称作“套接字”,用于藐视IP地址和端口,是一个通信链的句柄(其实就是两个程序通信用的)。

(2) Socket非常类似于电话插座,以一个电话网为例,电话的通话双方相当于相互通信的2个程序,电话号码就是IP地址,任何用户在通话之前,首先要占有一部电话机,相当于申请一个Socket;同时要知道对方的电话号码,相当于对方有一个固定的Socket,然后向对方拨号呼叫,相当于发出连接请求,对方假如在场并且空闲,拿起电话话筒,双方就可以正式通话,相当于连接成功,双方通话的过程,是一方向电话机发出信号和对方从电话机接收信号的过程,相当于向 Socket发送数据和从Socket接收数据,通话结束后,一方挂起电话机相当于关闭Socket,撤销连接。

(3) 在Internet上面有很多这样的主机,这些主机一般运行了多个服务软件,同时提供几种服务,每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务(应用程序)。

(4) 例如:http使用80端口,ftp使用21端口,smtp使用23端口。

(5) 有两种类型的Socket

1) 流式Socket(Stream)

是一种面向连接的Socket,针对于面向连接的TCP服务应用,安全,但是效率低。

2) 数据报式Socket(Datagram)

是一种无连接的Socket,对应于无连接的UDP服务应用,不安全(丢失,顺序混乱,在接收端要分析重排及要求重发),但是效率高。

2. Socket一般应用模式(服务器端和客户端)

(1) 如图所示,分析图示:

  1. Socket的通讯过程

(1) 服务器端

1) 申请一个Socket。

2) 绑定到一个IP地址和一个端口上。

3) 开启侦听,等待接收数据。

(2) 客户端

1) 申请一个Socket。

2) 连接服务器(指明IP地址和端口号)

3) 服务器端连接到连接请求后,产生一个新的Socket(端口大于1024)于客户端建立连接并进行通讯,原侦听Socket继续侦听。如图所示:

  1. Socket的构造函数

(1) 连接通过构造函数完成

(2) public Socket(AddressFamily address,SocketType socket,ProtocolType protocol)

1) AddressFamily成员指定Socket用来解析地址的寻址方案。例如:

InterNetWork相当于Socket使用一个IP版本4地址连接。

2) SocketType定义要打开的Socket的类型。

3) Socket类使用ProtocolType枚举向Windows Socket API通知所请求的协议

如:mySocket=new Socket(AddressFamily.InterNetWork,SocketType.Stream,ProtocolType.TCP);

(3) 注意:

1) 至少要定义一个要连接的远程主机的IP和端口号

2) 端口号必须为1和65535之间,最好在1024之后。

3) 要连接的远程主机必须正在监听指定端口,也就是说你无法随意连接远程主机。

如:IPAddress addr=IPAddress.Parse(10.10.4.200);

IPEndPoint endp=new IPEndPoint(addr,10001);

服务端先绑定:serverWelcomeSocket.Bind(endp);

客户端在连接:ClientSocket.Connect(endp);

  1. Socket的方法

(1) 相关类

1) IPAddress类:包含了一个IP地址

2) IPEndPoint类:包含了一对IP地址和端口号

(2) 相关方法

1) Socket():创建一个Socket。

2) Bind():绑定一个本地的IP和端口号(IPEndPoint)

3) Listen():让Socket侦听传入的连接尝试,并指定侦听队列容量。

4) Connect():初始化与另外一个Socket的连接。

5) Accept():接收连接并且返回一个新的Socket。

6) Send():输出数据到Socket。

7) Receive():从Socket中读取数据。

8) Close():关闭Socket(销毁连接)

查看 [2048]   评论 [0] 
相关标签: 程序开发  网页设计  文字 
文章评论
暂无数据!
我来说两句
昵 称:
评 论:
   
咨询电话:020-61136292 87569708 61004412 61004413
讯博官网 | 走进讯博 | 整合营销 | 案例解读 | 资讯中心 | 案例欣赏 | 产品体验区 | 客户如是说 | 联系我们
版权所有 © 2003-2014 广州讯博网络科技有限公司 粤ICP备08107356号 开心一刻
Website Design & Power by:Cenbel.com