下载此文档

异步通信.doc


文档分类:通信/电子 | 页数:约11页 举报非法文档有奖
1/11
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/11 下载此文档
文档列表 文档介绍
基于TCP协议的异步通讯(c#)
:
  在同步模式中,ept方法接入连接请求,而在客户端我们则使用Connect方法来连接服务器。相对地,在异步模式下,ept方法来完成连接到客户端的任务,在客户端则通过BeginConnect方法和EndConnect方法来实现与服务器的连接。
  ept在异步方式下传入的连接尝试,ept之前,必须使用Listen方法来侦听是否有连接请求,等待他把请求放入消息队列中参数列表为:
ept(allBack, Ojbect state)
allBack:代表回调函数
state:表示状态信息,必须保证state中包含socket的句柄
 
ept()方法来完成操作,该方法返回新的套接字对象,并在以后的通信中可以使用该套接字。其基本流程是:
(1)创建本地终节点,并新建套接字与本地终节点进行绑定;
(2)在端口上侦听是否有新的连接请求;
(3)请求开始接入新的连接,传入Socket的实例或者StateOjbect的实例
代码
//定义IP地址
IPAddress local=(",0,1");
IPEndPoint iep=new IPEndPoint(local,13000);
//创建服务器的socket对象
 server=new Socket(,,)
(iep);
(20);
(New allBack(Accept),server);
 
ept()方法调用结束后,一旦新的连接发生,将调用回调函数,ept()方法。
该方参数列表为 Socket ept(IAsyncResult iar)
下面为回调函数的实例:
void Accept(IAsyncResult iar)
{
  //还原传入的原始套接字
  Socket MyServer=(Socket);
  //ept方法,返回新的套接字
  service=(iar);
}
 
服务器端已经准备好了,那么客户端应通过BeginConnect方法和EndConnect来远程连接主机。在调用BeginConnect方法时必须注册相应的回调函数并且至少传第一个Socket的实例给state参数,以保证EndConnect方法中能使用原始的套接字。下面是一段BeginConnect的调用:
 
代码
Socket socket=new Socket(,,)
IPAddress ip=("");
IpEndPoint iep=new IPEndpoint(ip,13000);
(iep, new allBack(Connect),sock);
 
EndConnect是一种阻塞方法,用于完成BeginConnect方法的异步连接诶远程主机的请求。Reuslt作为参数。下面为代码演示:
代码
void Connect(IAsyncResult iar)
{
  client=(socket);
  try
  {
    (iar);
  }
  Catch(SocketException)
  {
    ("无法连接");
  }
  Finally
  {
  }
}
 
etpTcpClient方法处理一个传入的连接尝试。etpTcpClient方法的代码:
代码
public static void ept(TcpListener listner)
{
  //开始从客户端监听连接
  ("Waitting for a connection");
  //接收连接
  //开始准备接入新的连接,eptTcpCliet
  
  (
    new allBack(eptTcpCliet),
    listner
  );
}
//处理客户端的连接
public static void eptTcpCliet(IAsyncResult iar)
{
  //还原原始的T

异步通信 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数11
  • 收藏数0 收藏
  • 顶次数0
  • 上传人xyb333199
  • 文件大小0 KB
  • 时间2015-05-22