(1)     使用异步方式进行服务器监听
通过异步方式进行服务器监听,无需阻塞,只要调用BeginAccept方法后,就可以继续执行后面的代码了。BeginAccept方法中,需要指定一个委托,当有连接请求到来时,由它来处理,代码如下:
serverSock = new Socket (AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp);
serverSock.Bind (new IPEndPoint (IPAddress.Parse (_ip),_port));
serverSock.Listen(10);
serverSock.BeginAccept(new AsyncCallback(OnConnectRequest),serverSock);
异步的连接事件处理中,将为请求的连接建立一个新的连接:
private void OnConnectRequest(IAsyncResult ar){
Socket listener = (Socket)ar.AsyncState;
Socket link = listener.EndAccept(ar);//新的连接
……
(2)     异步的数据发送和接收
当建立连接后,需要为连接指定异步的接收方法和异步发送方法。由于发送过程往往是主动的,可以由用户控制,而接收过程则需要等待,所以异步接收更有实际意义。异步的接收方法是:
AsyncCallback recieveData = new AsyncCallback (OnRecievedData);
sock.BeginReceive (msgBuff, 0, msgBuff.Length, Socket-Flags.None, recieveData, sock);
而指定的异步接收委托方法是:
private void OnRecievedData(IAsyncResult ar){
Socket sock = (Socket)ar.AsyncState;
int nBytesRec = sock.EndReceive(ar);
string sRecieved = Encoding.ASCII.GetString(msgBuff, 0, nBytesRec);
对于发送,既可以用同步的发送方法Send,也可以用异步的方法BeginSend,其处理方法和接收相似。
(3)     连接过程
对客户端而言,可以用异步方法BeginConnect连接到服务器端。
_sock.BeginConnect(epServer, new AsyncCallback(OnConnect),_sock);
该方法设定的连接建立处理OnConnect中,可以从参数中获得建立的连接。
Socket sock = (Socket)ar.AsyncState;
sock.EndConnect(ar);
3.    基于WCF消息推送服务的设计
上一篇:C#的家庭理财系统软件设计+ER图
下一篇:基于sharepoint软件的电站管理数据库建立

Android手机考勤平台的设计与实现

基于android的环境信息管理系统设计

java+mysql班级评优系统的设计实现

Python+mysql宠物领养平台的设计与实现

ASP.NET飞翔租贷汽车公司信...

基于激光超声检测金属材...

多频激励下典型非线性系统的振动特性研究

压疮高危人群的标准化中...

从政策角度谈黑龙江對俄...

提高教育质量,构建大學生...

酵母菌发酵生产天然香料...

浅谈高校行政管理人员的...

基于Joomla平台的计算机学院网站设计与开发

STC89C52单片机NRF24L01的无线病房呼叫系统设计

AES算法GPU协处理下分组加...

浅论职工思想政治工作茬...

上海居民的社会参与研究