---------------------- Windows Phone 7手机开发、Net培训、期待与您交流! ----------------------
黑马程序员--.Net学习日记——套接字
套接字(socket)
socket的英文原意是"孔""插座",作为进程通信机制,取后一种意思,通常也称作套接字,用于描述IP地址和端口,是一个通信链的句柄.(其实就是两个程序通信用的).
在Internet上有很多这样的主机,这些主机一般运行了多个服务软件.同时提供了n种服务,每种服务都打开一个socket,并绑定到一个端口上,不同的端口对应于不同的服务(应用程序).
两种类型:
1.流式socket(stream)
是一种面向连接的socket,针对于面向连接的TCP服务应用,安全但是效率低.
2.数据报式
是一种无连接的socket,对应于无连接的UDP服务应用,不安全(丢失,顺序混乱,在接收端要分析重排及要求重发),但效率高.
socket一般应用模式(服务器端和客户端)
1.服务端welcoming socket开始监听端口(负责监听客户端连接信息)
2.客户端client socket连接服务端指定的端口(负责接收和发送服务端消息).
3.服务端welcoming socket监听到客户端连接,创建connection socket(负责和客户端通信).
服务器端的socket(至少需要两个)
1.一个负责接收客户端连接请求(不负责与客户端通信).
2.每成功接收到一个客户端的连接便在服务端产生一个对应的socket.
(1).在接收到客户端连接时创建.
(2).为每个连接成功的客户端请求的服务端创建一个对应的socket(负责通信).
客户端的socket
1.必须指定要连接的服务器端地址和端口.
通过创建一个socket对象来初始化一个到服务器端的TCP连接.
socket的通讯过程
服务器端:
1.申情一个socket
2.绑定到一个IP地址和一个端口上.
3.开启侦听,等待接收连接.
客户端:
1.申请一个socket
2.连接服务器(指明IP地址和端口号).
服务器端接到连接请求后,产生一个新的socket(端口大于1024)与客户端建立并进行通讯,原侦听socket继续侦听.
创建Socket的实例,可以通过Socket类的构造方法来实现:
public Socket(AddressFamily AddressFamily,SocketType SocketType,ProtocolType protocolType );
其中,addressFamily参数指定Socket使用的寻址方案,sockeType参数指定Socket的类型,protocolType参数指定Socket使用的协议.
下面的语句创建一个Socket,他可用在基于TCO/IP的网络(如Internet)上通讯.
Socket temp=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
如果使用UDP而不是TCP,需要更改协议类型,如下:
Socket temp=new Socket(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp);
一旦创建了Socket,在客户端,可以通过Connect方法连接到指定的服务器,并通过Send方法向远程服务器发送数据,然后可以通过Receive从服务端接收数据:而在服务器端,需要使用Bind方法绑定所指定的接口使Socket与一个本地终结点相连,并通过listen方法侦听该接口上的请求,当侦听都用户端的连接是,调用Accept完成连接的操作,创建新的Socket以处理传入的连接请求.使用完Socket后,使用Close方法关闭Socket
---------------------- Windows Phone 7手机开发、Net培训、期待与您交流! ----------------------
详细请查看:http://net.itheima.com/