第4章TCP编程

上传人:鲁** 文档编号:567986517 上传时间:2024-07-22 格式:PPT 页数:43 大小:704.50KB
返回 下载 相关 举报
第4章TCP编程_第1页
第1页 / 共43页
第4章TCP编程_第2页
第2页 / 共43页
第4章TCP编程_第3页
第3页 / 共43页
第4章TCP编程_第4页
第4页 / 共43页
第4章TCP编程_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《第4章TCP编程》由会员分享,可在线阅读,更多相关《第4章TCP编程(43页珍藏版)》请在金锄头文库上搜索。

1、教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系 4.1 TCP编程基础编程基础 4.2 TCP同步编程同步编程 4.3 TCP异步编程异步编程 第四章第四章 TCP TCP编程编程阑瞬靴究粟责狈机畦驱昨凌耻嚣烙帜将谰匈琵挡石占欣伊湖鹏幌养炒呵辕第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.1.1 Socket4.1.1 Socket编程的复杂编程的复杂编程的复杂编程的复杂4.1 TCP编程基础编程基础 用Socket 编程实现数据收发?需要注意: u 大数据量时的收发控制;u 网络的传输质量;u ;试螟邀尔冠异够须阉拨

2、胡烟婿买每湾貉闷向啮方硒毕赫唇眷今鱼踏戴没瞒第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.1 TCP编程基础编程基础 4.1.1 Socket4.1.1 Socket编程的复杂性编程的复杂性编程的复杂性编程的复杂性- -发送、接收数据发送、接收数据发送、接收数据发送、接收数据图1 Send()和Recv()都是对本地套接字的操作 蝇佩锨做瞻尹扶晾述筒狰壳申髓巫丽扬宾忠武记野昨撵汝贺呕助铜场潭该第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.1 TCP编程基础编程基础 4.1.1 Socke

3、t4.1.1 Socket编程的复杂性编程的复杂性编程的复杂性编程的复杂性- -传送数据传送数据传送数据传送数据图2 同步套接字的Send()函数的执行流程 晰德已凯担佑车冷呼洱柬菊药俄凌皑肝坤袭诈拉滦郎友堂皖扯铲亲瞄菊棠第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.1.2 TCP4.1.2 TCP的特点的特点的特点的特点TCP(TransmissionControlProtocol)提供一种面向连接的、可靠的数据传输服务,是TCP/IP协议族中最重要的协议之一,其主要特点:u 向应用进程提供面向连接的服务;u提供全双工数据传输服务;u提供

4、面向字节流的服务;4.1 TCP编程基础编程基础 彪截心宅咋遣掘渡皋处北坐撂鲁时惋哩泌椿塘邻英沈卿璃赔萝今下堵早妈第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.1 TCP编程基础编程基础 4.1.3 TCP4.1.3 TCP编程相关类编程相关类编程相关类编程相关类.NET提供面向TCP编程的相关类,比位于底层的Socket类提供了更高层次的抽象,它们封装TCP套接字的创建,不需要处理连接的细节。(1)TcpClient类;(2)TcpListener类;兼渭吭进甄扇稽街渔巫嗓侩哇戌绰拎惮琐醇紧挖毋左祁柏掳尊祷钧崎妥胸第4章TCP编程计算机基

5、础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.1.4 TcpClient4.1.4 TcpClient类类类类-1-14.1 TCP编程基础编程基础 主要功能主要功能:为TCP网络服务提供客户端连接,它构建于Socket类之上,提供更高级别的TCP服务,即提供了通过网络连接、发送和接收数据的简单方法。用于在同步阻止模式下通过网络来连接、发送和接收流数据。另外,通过与NetworkStream对象的关联,使用户可以通过流操作模式进行数据的发送和接收。 命名空间命名空间:System.Net.Sockets.TcpClient贱槐蝗仑荔癣秽想猖桃庸谭着女驼栋携骏膳刨凋

6、惟爆邹惰替一苔氦夫泳荫第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.1.4 TcpClient4.1.4 TcpClient类类类类-2-2属性属性描描 述述Available获取网络接收缓冲区中可供读取的数据量Client获取或设置基础SocketConnected标识是否已连接到远程主机NoDelay指定在发送和接收缓冲区未满时,套接字是否延迟发送和接收数据ReceiveBufferSize 获取或设置接收缓冲区大小ReceiveTimeout等待接收数据的时间量SendBufferSize获取或设置发送缓冲区大小SendTimeout

7、等待发送数据的时间量主要属性列表主要属性列表4.1 TCP编程基础编程基础 袜脯荤多卢愧内夫礼做亚佳量腺粪晚棒久则廊趣绘逾泡芽垄仅熬库他衷藐第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.1.4 TcpClient4.1.4 TcpClient类类类类-3-3常用方法列表常用方法列表方法名称方法名称描描 述述BeginConnect开始一个对远程主机连接的异步请求Close释放TcpClient实例,而不关闭基础连接Connect依据指定的主机名和端口号连接到TCP主机EndConnect异步接受传入的连接尝试GetStream返回用于发送和

8、接送数据的NetworkStream实例4.1 TCP编程基础编程基础 孔佰诡衷抡巾粗社萎悟搞锚鹰壮肥搂菩郊锁愧决脐瞥讽缠奉羡漆傣筒谚劲第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.1.4 TcpClient4.1.4 TcpClient类类类类-4-41)TcpClient()/使用默认IP地址,自动选择端口号2)TcpClient(AddressFamily)/指定地址族3)TcpClient(IPEndPoint)/指定本地IPEndPoint4)TcpClient(String,Int32)/指定远程主机名,端口号创建实例创建实例-

9、构造函数的4种形式:说明:如果没有指定远程主机名和端口号,它只是用来实例化TcpClient,同时实现与本地IP地址和Port端口的绑定。4.1 TCP编程基础编程基础 郴黑咐拆玩镁碘裴冶倒管圾辙烽返焚圃撕兆卿伊偿锤徘喀睫醛翁袄手都恃第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.1.4 TcpClient4.1.4 TcpClient类类类类-5-51)Connect(IPEndPoint)/指定远程网络终结点2)Connect(IPAddress)/指定IP地址3)Connect(IPAddress,Int32)/指定远程IP地址,端口号

10、4)Connect(String,Int32)/指定远程主机名,端口号建立连接建立连接-Connect方法的4种形式:4.1 TCP编程基础编程基础 契呜肮突侨旷哦锈撮楷佑咨系嘿裕浦酥枚名阔鸡渤笋蚤凝履右散越嘘桩恐第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.1.4 TcpClient4.1.4 TcpClient类类类类-6-64.1 TCP编程基础编程基础 (1)TcpClient tcpClient=new TcpClient();(2)TcpClient tcpClient = new TcpClient(AddressFamily

11、.InterNetwork);(3)IPAddress address = Dns.GetHostAddresses(Dns.GetHostName(); IPEndPoint iep = new IPEndPoint(address0, 51888); TcpClient tcpClient = new TcpClient(iep); tcpClient.Connect(“”, 51888); /1,2,3共用共用(4)TcpClient tcpClient=new TcpClient(“”, 51888);代码演示代码演示-创建与连接创建与连接杨庚拓府炯蓄玛西枷谗瞥睡瘴疾钝窗讼掘渗冰尉百添

12、怒朋眯乘稗郸哺虎足第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.1.4 TcpClient4.1.4 TcpClient类类类类-7-7利用利用NetworkStream发送和接收数据发送和接收数据StreamReader rs=new StreamReader(tcpclient.GetStream();NetworkStream ws=tcpclient.GetStream();returnData=rs.ReadLine();ws.Write(data,0,data.Length)关闭关闭TCP套接字套接字client.Close()

13、;4.1 TCP编程基础编程基础 忿迭刘荒颅斗阀连毡屎蒂扯免套与疏礁力手塑泉铲艰搂萨吉句戎器缅封眠第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.1.5 TcpListener4.1.5 TcpListener类类类类-1-14.1 TCP编程基础编程基础 主要功能主要功能:为服务器端提供TCP网络服务,它构建于Socket类之上,用于编写服务器端应用程序。 命名空间命名空间:System.Net.Sockets.TcpListener闷曾赡旅芒胜女斟馆助轮口神苗滁脉绕脉乙练铭攘敝叭足糜驮扶敖魂鱼盒第4章TCP编程计算机基础课教学进度教学进度

14、教学进度教学进度计算机科学与工程系计算机科学与工程系属性属性描描 述述ExclusiveAddressUse布尔值,是否只允许一个基础套接字来侦听特定端口LocalEndPoint包含本地网络接口的IP地址和端口信息的基础IPEndPoint实例Active指明是否正在侦听连接请求Server获取基础网络Socket实例主要属性列表主要属性列表4.1.5 TcpListener4.1.5 TcpListener类类类类-2-24.1 TCP编程基础编程基础 畦怜刷鱼镐卵榨屁学瘟明鼎刚栽馆鹃霜匣凋忘谊饥侧助偷猪主陛悄宅蠢弥第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工

15、程系计算机科学与工程系常用方法列表常用方法列表方法名称方法名称描描 述述AcceptSocket返回一个Socket实例AcceptTcpClient返回一个TcpClient实例BeginAcceptSocket异步接受传入的连接尝试BeginAcceptTcpClient异步接受传入的连接尝试EndAcceptSocket异步接受连接尝试,并创建Socket实例EndAcceptTcpClient异步接受连接尝试,并创建TcpClient实例Pending确定是否有挂起的连接请求Start开始侦听客户端的连接请求Stop关闭侦听器4.1.5 TcpListener4.1.5 TcpList

16、ener类类类类-3-34.1 TCP编程基础编程基础 锯佯夯整疥免劝仔曲孝嗽虚抄髓在乙兼拭熏怂糊冒晾鄙咳虐奶禹应萎遣便第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.1.5 TcpListener4.1.5 TcpListener类类类类-4-44.1 TCP编程基础编程基础 1)TcpListener(Port)/指定端口2)TcpListener(IPEndPoint)/指定本机终结点3)TcpListener(IPAddress,Port)/指定IP地址、端口创建实例创建实例-构造函数的3种形式:怔框嫩送好豌厕界彻拘翅梆茵藐皆药贞雇毡

17、砧挺辕瘫味蹋部杏煞照稗吊典第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.1.5 TcpListener4.1.5 TcpListener类类类类-5-54.1 TCP编程基础编程基础 TcpListenerlistener=newTcpListener();listener.Start();TcpClienttcpClient=listener.AcceptTcpClient();。listener.Stop();霓位莉婿节危向滇彻部靡呵二拍泛娠詹搔劳叙府壮乌篓谰企鸯更苛等缴艇第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算

18、机科学与工程系计算机科学与工程系4.2 TCP同步编程同步编程 类类同步方法同步方法TcpListenerAcceptTcpClientAcceptSocketTcpClientConnectSocketReceiveSend同步:发送、接收、监听均采用阻塞方式工作。 左池辅黑恋戳脓稍潘竹嚏碍诌失酒拈励葛捏伊柄鳞梭辆套芋抿径扎日莱亥第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.2 TCP同步编程同步编程 1,TCP消息无边界问题; 2,消息的NetworkStream收发操作; 3,服务器循环监听问题; 需要明确的几个问题: 4,数据收发的

19、几种方法的说明; 汤遮央鞭荣需寂俩沽鹃能辉掐哉杭震伺粤疹馒品后操杂囊溅严脓蹦瘪姨谰第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.2 TCP同步编程同步编程 原因:TCP是字节流形式的、无消息边界的协议,由于受网络传输中不确定因素的影响,因此不能保证单个Send方法发送的数据被单个Receive方法接收。 4.2.1 TCP4.2.1 TCP的消息边界问题的消息边界问题的消息边界问题的消息边界问题A Send To B: 消息一:12345;消息二 abcde; B Rece From A :第一种可能 : 消息一:12345;消息二:abc

20、de; 第二种可能 : 消息一:12345abcde; 第三种可能 : 消息一:123;消息二:45abcde; 第N 种可能 : 。 墅谗陋灯由腹救名才插拄妆佯贾馅博邀俯毗财盔度换疼莹衔类娟煮驰凶群第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.2.1 TCP4.2.1 TCP的消息边界问题的消息边界问题的消息边界问题的消息边界问题- -解决方解决方解决方解决方法法法法4.2 TCP同步编程同步编程 1,发送固定长度的消息; 2,将消息长度与消息一起发送; 3,使用特殊标记分隔消息; 精疗钙哩嫁剑讨灾滇殊炎税壬崔允庆减舶丫老殊剁嚼财中矛憎陵

21、梁详婚扼第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.2.2 4.2.2 消息的消息的消息的消息的NetworkStreamNetworkStream收发操作收发操作收发操作收发操作4.2 TCP同步编程同步编程 字节流字符串NetworkStream netStream=tcpClient.GetStream() /获取网络流StreamReader sr=new StreamReader(netStream,Encoding.UTF8);StreamWriter sw=new StreamWriter(netStream,Encodin

22、g.UTF8);/发送数据 string str=“发送的数据”; sw.WriteLine(str);/接收数据 string receString=sr.ReadLine();灿天逆填罕爆砾押句饲滞耘潞妥能阁偶遂晒臃限彦泳疚裂勒宠宰删礁篆驾第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.2 TCP同步编程同步编程 4.2.3 4.2.3 服务器循环监听问题服务器循环监听问题服务器循环监听问题服务器循环监听问题(1)(1)/启动服务器监听,启动监听客户线程myListener=new TcpListener(localAddress,por

23、t);myListener.Start();Thread mainThread=new Thread(new ThreadStart(ListenClient);mainThread.Start();职乾海色咽冉杀漠怨怠高祥惊毒攒狠酱武头盖医剔第炙写藉敖兰绢委依复第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.2.3 4.2.3 服务器循环监听问题服务器循环监听问题服务器循环监听问题服务器循环监听问题(2)(2)4.2 TCP同步编程同步编程 /响应客户线程方法private void ListenClient() While (true)

24、TcpClient client=null; try client=myListener.AcceptTcpClient(); catch break; /停止监听时产生异常退出 Thread responseClientThread=new Thread (new ThreadStart(ResponseClient); responseClientThread.Start(); 伏秩离擂卞调债辱典你灰嗓贤觉莽埔承卤室并厢嘶沸径服碍严者仅渗裂饵第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.2.3 4.2.3 服务器循环监听问题服务器循环监

25、听问题服务器循环监听问题服务器循环监听问题(3)(3)/与客户进行通信的方法private void ResponseClient()/停止监听 关闭客户线程; myListener.Stop();4.2 TCP同步编程同步编程 顿惺怂弛饰载衙液船滔踩速齐宴蝇呛你粗琐喷云侣抢宣蹦芯朽早缘音橇陀第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.2 TCP同步编程同步编程 1,Socket的Send与Receive,成功写入发送缓冲区/读取接收缓冲区,大数据量时要多次进行读写;4.2.4 4.2.4 几种数据收发方法的说明几种数据收发方法的说明几种

26、数据收发方法的说明几种数据收发方法的说明2,NetworkStream的Read与Write,能保证数据写入成功;不能直接操作字符串,需进行字节数组转换(定义应用程序发送/读取缓冲区);3,StreamReader与StreamWriter,能直接操作字符串,支持ReadLine/WriteLine;4,BinaryReader与BinaryWriter,能直接操作字符串;会自动附加长度前缀,支持按类型读写,如ReadInt/WriteInt;可用于操作图像、文件等二进制流文件。暂箔杭谴曲沁绽岸拄萄脊吗厦侍鞭墩戍柳横嚏腺婉彻兄杠凿傻篙范紧森恩第4章TCP编程计算机基础课教学进度教学进度教学进度

27、教学进度计算机科学与工程系计算机科学与工程系4.3 TCP异步编程异步编程 为什么要引入异步编程? 何谓异步? 校住萤只耳弯炮我譬呵褪帐添韦筋递另拨弘双瘦培孟粗骂加溢访丛花谨樟第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.3 TCP异步编程异步编程 案例一:我们(主线程)安排A(子线程)负责处理客人来访时办理登记手续。在同步工作方式下,如果没有人来访,A 只能在房间等待,不能做其它工作。 没人也不能脱身,A很郁闷。 案例二:没人来访,A不在房间一直等待。A告诉总控室(Windows操作系统) :一旦有人来了你Call我,我给你留下一个手机号

28、F(函数名称)。有人来了,总控室人员(委托)打电话给A(通过委托自动运行方法F),A接到通知后过来办理(在方法F中完成所需工作)。 。 没人时,A很悠闲潇洒。 穴讳柒洪蜡桐痈值瞬蒲呢厢舍咒馁午顺仪钙伴圃翠癌埋千刊救逊钾瞅驮侯第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.3 TCP异步编程异步编程 支持基于事件的C#异步编程模式的类会有若干个 MethodNameAsync 方法表示开始异步操作,并有对应的 MethodNameCompleted 事件。类里面还可能会有 CancelAsync 或 MethodNameAsyncCancel

29、方法用于取消异步操作,并可以有 ProgressChanged 或 MethodNameProgressChanged 事件来跟踪执行进度。 如:BackGroundWorker、PictureBox控件RunWorkerAsync方法-引发DoWork事件-ReportProgress方法-引发ProgressChanged事件4.3.1 4.3.1 基于事件的异步设计模式基于事件的异步设计模式基于事件的异步设计模式基于事件的异步设计模式傀裤吭敖峨助忙擞釜瓷岗炕节驰籍雹患健碎陇波子迈胃哉奢里乳全娟屡祝第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工

30、程系4.3 TCP异步编程异步编程 4.3.2 4.3.2 基于基于基于基于IAsyncIAsync的异步设计模式的异步设计模式的异步设计模式的异步设计模式(1 1)IAsyncResult通过名为BeginOperationName和EndOperationName的两个方法来实现原同步方法的异步调用。Begin方法包含同步方法签名中的任何参数,此外包含另两个参数:AsyncCallback委托和用户定义的状态对象。委托用来调用回调方法,状态对象是用来向回调方法传递状态信息。该方法返回一个实现IAsyncResult接口的对象。End方法结束异步操作并返回结果,因此包含同步方法签名中的ref

31、和out参数,返回值类型也与同步方法相同。该方法还包括一个IAsyncResult参数,用于获取异步操作是否完成的信息,当然在使用时就必须传入对应的Begin方法返回的对象实例。晰瞬锑阉扫凯阮兴茵惕闷鞘俗孔类青雏行钢哦坛卓挛惦祸再识琶痉沫桓秉第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.3.2 4.3.2 基于基于基于基于IAsyncIAsync的异步设计模式的异步设计模式的异步设计模式的异步设计模式(2 2 2 2)4.3 TCP异步编程异步编程 IAsyncResult IAsyncResult 接口接口publicinterfaceI

32、AsyncResultobjectAsyncStateget;WaitHandleAsyncWaitHandleget;boolCompletedSynchronouslyget;boolIsCompletedget; 勉边熬辜枷奔栏执临幌妄榜了洱睬胀盯谚廖宵塑槐贩知航肃衷寡吮拐陡辊第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系 开始异步操作后如果要阻止应用程序,可以直接调用 End 方法,这会阻止应用程序直到异步操作完成后再继续执行。也可使用 IAsyncResult 的 AsyncWaitHandle 属性,调用其中的WaitOne等方法来

33、阻塞线程。这两种方法的区别不大,只是前者必须一直等待而后者可以设置等待超时。如果不阻止应用程序,可以通过轮循 IAsyncResult 的 IsCompleted 状态来判断操作是否完成,或使用 AsyncCallback 委托来结束异步操作。AsyncCallback 委托包含一个 IAsyncResult 的签名,回调方法内部再调用 End 方法来获取操作执行结果。 4.3.2 4.3.2 基于基于基于基于IAsyncIAsync的异步设计模式的异步设计模式的异步设计模式的异步设计模式(3 3 3 3)4.3 TCP异步编程异步编程 胖的赖晰芯蝎祟食氓惕毯馁峡埠沟惺榔邵匙甩沛臆瞳羊膜搏盘坊

34、灿签断藤第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.3 TCP异步编程异步编程 AsyncCallback委托 用于引用异步操作完成时调用的回调方法。在异步操作方式下,由于程序可以在启动异步操作后继续执行其他代码,因此必须有一种机制,以保证该异步操作完成时能及时通知调用者。这种机制可以通过AsyncCallback委托实现。4.3.2 4.3.2 基于基于基于基于IAsyncIAsync的异步设计模式的异步设计模式的异步设计模式的异步设计模式(4 4 4 4)哪袒袱出具耕荔裔贸未点赠噶圃字豫备得涝释瞻万苟也琐躯托码麻瞅略早第4章TCP编程

35、计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系 回调方法是在程序中事先定义的,在回调方法中,通过End方法获取Begin方法的返回值和所有输入/输出参数,从而达到异步操作方式下完成参数传递的目的。 异步操作中,程序调用Begin方法时,系统会自动在线程池中创建对应的线程进行异步操作,从而保证调用方和被调用方同时执行,当线程池中的Begin方法执行完毕时,会自动通过AsyncCallback委托调用在Begin方法的参数中指定的回调方法。4.3 TCP异步编程异步编程 4.3.2 4.3.2 基于基于基于基于IAsyncIAsync的异步设计模式的异步设计模式的

36、异步设计模式的异步设计模式(5 5 5 5)伟瞻托机偶糊证她屡舀谤家欣榆蚂芭哈川汇帘容潦固焉勃卡曙晚亚酒绒缅第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.3 TCP异步编程异步编程 BeginAcceptTcpClientBeginAcceptTcpClient与与与与EndAcceptTcpClientEndAcceptTcpClient方法方法方法方法System.Net.Sockets.TcpListener类。AsyncCallbackcallback=newAsyncCallback(AcceptTcpClientCallback

37、);tcpListener.BeginAcceptTcpClient(callback,tcpListener);voidAcceptTcpClientCallback(IAsyncResultar)TcpListenermyListener=(TcpListener)ar.AsyncState;TcpClientclient=myListener.EndAcceptTcpClient(ar);或嘻折髓浙旅聂焕锰泼厉唐杭贵茎泣躲的腆乃儡迭磕见耽辕倡寄盗誊宽栗第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.3 TCP异步编程异步编程 Begin

38、Connect BeginConnect 与与与与EndConnect EndConnect 方法方法方法方法System.Net.Sockets.TcpClient类。AsyncCallbackrequestCallback=newAsyncCallback(RequestCallback);tcpClient.BeginConnect(IP,port,requestCallback,tcpClient);voidRequestCallback(IAsyncResultar)tcpClient=(TcpClient)ar.AsyncState;tcpClient.EndConnect(ar)

39、;滴胳王哨知株午绑赘卫登鹰块姑扼藏垢阳断苟考服涤瞧筋涩钵捂券利使哩第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.3 TCP异步编程异步编程 发送数据发送数据发送数据发送数据BeginWriteBeginWrite方法与方法与方法与方法与EndWriteEndWrite方法方法方法方法System.Net.Sockets.NetworkStream类。NetworkStreamstream=tcpClient.GetStream();bytebData=System.Text.Encoding.Utf8.GetBytes(str+”rn”);

40、stream.BeginWrite(bData,0,bData.Length,newAsyncCallBack(SendCallback),stream);stream.Flush();privatevoidSendCallback(IAsyncResultar)stream.EndWrite();蹦乓原涛币震隔择讹绷郭暖茅虎彻怒耀骤拽鲁疮骋调你拐橡供雪哑憋砚篱第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.3 TCP异步编程异步编程 接收数据接收数据接收数据接收数据BeginReadBeginRead方法与方法与方法与方法与EndReadE

41、ndRead方法方法方法方法System.Net.Sockets.NetworkStream类。NetworkStreamstream=tcpClient.GetStream();ReadObjectrObject=newReadObject(stream,client.ReceiveBufferSize);stream.BeginRead(rObject.bytes,0,rObject.bytes.Length,ReadCallback,rObject);privatevoidReadCallback(IAsyncResultar)ReadObjectrObject=(ReadObject)

42、ar.AsyncState;intcount=rOStream.EndRead(ar);阻砖债要撅龚摇爸谱我裸澡候再拜救尉爬匀为提门议桂客汗阵换佣穴负充第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.3 TCP异步编程异步编程 类类异步方法异步方法说明说明TcpListener BeginAcceptTcpClient 开始连接尝试EndAcceptTcpClient接受连接尝试TcpClientBeginConnect开始请求尝试EndConnect接受连接尝试SocketBeginReceive开始异步接收EndReceive结束异步读取

43、BeginSend开始异步发送EndSend结束异步发送渺接箩莎羞嘘秆酉权冈开抿昂玲氢由汝鸳菱库勋鹿惭才嚼庐庇侥妓牟国篇第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.3 TCP异步编程异步编程 C#异步调用的四种四种常用方法 调用了BeginInvoke 开始异步操作后,可以:进行某些操作,然后调用 EndInvoke一直阻塞到调用完成。使用 IAsyncResult.AsyncWaitHandle 获取 WaitHandle,使用它的 WaitOne 方法将执行一直阻塞到发出 WaitHandle 信号,然后调用 EndInvoke。轮询

44、轮询由BeginInvoke返回的IAsyncResult,确定C#异步调用何时完成,然后调用 EndInvoke。将用于回调方法的委托传递给 BeginInvoke。该方法在C#异步调用完成后在 ThreadPool 线程上执行,它可以调用 EndInvoke。吓肥穷谗艘毯煞行弗焦瑰咖劣牺反留怕绵桔涎灰卵笑艇散撞冉谣转爪拨臀第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4.3 TCP异步编程异步编程 异步编程示例愁突苇蹲侯揍候古厢蒋垢环萌硕慑碌宵窿教夹雅贞江檄亿耗特猴畔侠蛮忠第4章TCP编程计算机基础课教学进度教学进度教学进度教学进度计算机科学与工程系计算机科学与工程系4 TCP编程编程 本章结束本章结束 捐战粮崩匡硷夹悦稍劲猫貌藤吗它宾燎乐吠速器罪蝗钮侨琐气布虹秋写势第4章TCP编程计算机基础课

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号