第09章 网络协议与套接字编程.ppt_第1页
第09章 网络协议与套接字编程.ppt_第2页
第09章 网络协议与套接字编程.ppt_第3页
第09章 网络协议与套接字编程.ppt_第4页
第09章 网络协议与套接字编程.ppt_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第9章 网络协议与套接字编程,9.1 进程和线程 9.2 C#中线程的开发 9.3 TCP/IP网络协议 9.4 套接字编程技术 9.5 数据流,9.1 进程和线程,基本概念 进程 在Windows中,系统能够同时运行多个程序,每一个正在运行的程序称为一个进程 线程 同一个进程又可以分成若干个独立的执行流,我们称之为线程。 线程是操作系统向其分配处理器时间的基本单位。 线程可执行进程的任何一部分代码,包括当前由另一线程执行的部分。 并行性(并发处理) 并发处理指计算机真正的或者是表面上呈现的同时处理。 进程、线程和并行性在程序开发中的作用,程序实例(进程的使用) 创建一个C# Windows应

2、用程序,设计界面如图,按钮事件: private void buttonStart_Click(object sender, System.EventArgs e) /启动Notepad.exe进程。 myProcess.Start(); ,private void buttonStop_Click(object sender, System.EventArgs e) Process myProcesses; /创建新的Process组件的数组,并将它们与指定的进 /程名称(Notepad)的所有进程资源相关联。 myProcesses = Process.GetProcessesByName

3、(Notepad); foreach (Process instance in myProcesses) /设置终止当前线程前等待的毫秒数 instance.WaitForExit(1000); instance.CloseMainWindow(); ,private void buttonView_Click(object sender, System.EventArgs e) this.listBox1.Items.Clear(); Process processes; /创建Process类型的数组,并将它们与系统内所有进程相关联 processes = Process.GetProce

4、sses(); foreach (Process p in processes) /将每个进程名和进程开始时间加入listBox1中 this.listBox1.Items.Add(p.ProcessName+ +p.StartTime.ToShortTimeString(); ,9.2 C#中线程的开发,基本概念(操作) 1. 启动线程 2. 让线程休眠 3. 销毁线程 4. ThreadState属性 5. 线程的优先级 6.线程池,程序实例(启动线程) using System; using System.Threading; class TestThread public static

5、 void Main() Thread thread1=new Thread(new ThreadStart(Method1); Thread thread2=new Thread(new ThreadStart(Method2); thread1.Start(); thread2.Start(); Console.Read(); public static void Method1() for (int i=0;i1000;i+)Console.Write(a); public static void Method2() for (int i=0;i1000;i+) Console.Writ

6、e(b); ,9.3 TCP/IP网络协议,TCP/IP协议实际上是一组协议的总称,它是一个4层的网络体系结构(应用层、传输层、网络层、网络接口层),这个4层的网络体系结构包括100多个相互关联的协议,由于IP是网络层最主要的协议,TCP是传输层最主要的协议,因此简称为TCP/IP协议。,9.4 套接字编程技术,基本概念 IP地址和端口 IP地址 端口 套接字 面向连接的套接字 在面向连接的套接字中,使用TCP协议来建立两个IP地址端点之间的会话。一旦建立了这种连接,就可以在设备之间可靠的传输数据。为了建立面向连接的套接字,服务器和客户端必须分别进行编程。 面向无连接的套接字 无连接的套接字不

7、需要在网络设备之间发送连接信息。因此,很难确定谁是服务器谁是客户机,面向连接的套接字 (上图) 面向无连接的 套接字编程(下图),9.4 套接字编程技术,基本概念 无阻塞编程技术 无阻塞套接字 当套接字是非阻塞模式的时候,就不会一直等待一个I/O方法的完成。 多路传输套接字 Socket类提供的Select()方法,这个方法用于多路传输多个套接字实例,以便找到一个已经准备好进行读或写的套接字。 异步套接字编程技术,9.4 套接字编程技术,程序实例一IPEndPoint类的使用 using System; using System.Net; class TestIPEndPoint public

8、 static void Main() IPAddress ip=IPAddress.Parse(); IPEndPoint iep=new IPEndPoint(ip,8000); Console.WriteLine(The IPEndPoint is:0,iep.ToString(); Console.WriteLine(The Address is:0,iep.Address); Console.WriteLine(The AddressFamily is:0,iep.AddressFamily); Console.WriteLine(The max port numb

9、er is:0,IPEndPoint.MaxPort); Console.WriteLine(The min port number is:0,IPEndPoint.MinPort); Console.Read(); ,9.4 套接字编程技术,程序实例二使用套接字 using System; using System.Net; using System.Net.Sockets; class TestSocket public static void Main() IPAddress ip=IPAddress.Parse(); IPEndPoint iep=new IPEndP

10、oint(ip,8000); Socket socket=new Socket(AddressFamily.InterNetwork, SocketType.Stream,ProtocolType.Tcp); Console.WriteLine(Blocking: 0,socket.Blocking); Console.WriteLine(Connected: 0,socket.Connected); socket.Bind(iep); Console.WriteLine(Local EndPoint: 0,socket.LocalEndPoint.ToString(); Console.Re

11、ad();,9.5 数据流,基本概念 流 文件流 网络流 数据流的操作 读 写,9.5 数据流,程序实例 获取本地所有磁盘 string drives=Directory.GetLogicalDrives(); for(int i=0;idrives.Length;i+) /左对齐,宽度5位 Console.Write(0,-5,drivesi); 输出结果类似如下形式: A: C: D: E:,9.5 数据流,程序实例 获取C盘根目录下的所有子目录 string dirs=Directory.GetDirectories(C:); for(int i=0;idirs.Length;i+) C

12、onsole.WriteLine(dirsi); ,程序实例 获取指定目录下的所有文件 string files=Directory.GetFiles(C:); for(int i=0;ifiles.Length;i+) Console.WriteLine(filesi); 获取当前目录 string currentPath=Directory.GetCurrentDirectory();,程序实例 文本文件的读写 using System; using System.IO; public class TestFileStream static void Main() StreamWriter sw = new StreamWriter(“MyFile.txt”,true, System.Text.Encoding.Unicode); sw.WriteLine(“第一条语句。”); sw.Write

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论