



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、用 C# 实现多线程 Socket 的通信我们把在 Windows 下同时执行的多个程序中的任何一个称 之为进程。 在操作系统的作用下, 任何一个进程都认为自己是独 立的,都认为自己拥有整台电脑全部的资源,比如内存、CPU等,它们并不知道其他进程正在与它分享这些资源, 所以每个进程不 会去访问另一个进程的资源。 这样做的好处是一个进程无法破坏 另一个进程, 但缺点是进程之间的信息很难共享。 虽然每个进程 都认为自己拥有全部 CPU资源,但实际并不是这样,系统把CPU资源以时间片为单位, 按特定的算法进行分配。 在分配时间片的 时候,系统并不是按进程来分配而是按线程来进行分配, 也就是 说只有线
2、程才有权得到 CPU资源。我们可以认为线程就是一段可 以被执行的代码序列,在每一个进程内部,至少有一个线程,所 有进程的运行其实是进程内部的线程被执行而已, 这就是进程能 获得时间片的原因。 我们创建的所有程序内部都有一个线程, 在 编写程序时并不需要做什么特殊处理, 但我们可以通过编写代码 让程序内部有多个线程, 我们把包含两个或两个以上的线程称之 为多线程程序。1 Socket 基本原理在C中,MS为我们提供了 System.Sockets 命名空间,程 序员可以通过 socket 来发送和接收网络上的数据。我们可以把 它理解成是一个 API,有了它就可以通过这个接口访问网络从而 省去了很
3、多复杂的操作。要通过互联网进行通信, 至少需要一对套接字, 它是通信主 机之间的端点,由它构成了单个主机内及整个网络间的编程界 面。 我们把运行于客户机端的称之 ClientSocket , 运行于服 务器端的称之为 ServerSocket 。它的连接过程可以分为三个步 骤:服务器监听,客户端请求,连接确认。2 Socket 通信过程 的实现2.1 服务器端申请一个 Socket ,定义到一个 IP 地址和一个端口上开启侦 听。每成功接受一个客户端的链接便在服务端产生一个对应的 Socket ,在接收客户端连接时创建责和对应的客户端通信。int recv ; / 用于表示客户端发送的信息长度
4、byte data=new byte1024 ; / 用于缓存客户端所发送的 信息IPEndPoint ipep = new IPEndPoint(IPAddress.Any ,9050); / 定义一网络端点 Socket newsock = new Socket ( AddressFamily.InterNetwork , SocketType.Dgram , ProtocolType.Udp ); / 定义一个 Socketnewsock.Bind ( ipep ); /Socket 与本地的一个终结点相 关联IPEndPoint sender = newIPEndPoint( IPAd
5、dress.Any ,0 ); / 定义要发送 的计算机的地址recv = newsock.ReceiveFrom ( data , ref Remote );/ 接受数据newsock.SendTo( data ,data.Length ,SocketFlags.None , Remote); / 发送信息2.2 客户端申请一个 Socket ,连接服务器(必须指明 IP 地址和端口号) , 通过创建一个Socket对象来初始化一个服务器端的 TCP连接:byte data = new byte1024; / 定义一个数组用来做数据的缓冲区string input , stringData
6、;IPEndPoint ipep = new IPEndPoint(IPAddress.Parse( ), 9050 );/ 本机预使用的 IP 和端口server.SendTo (data , data.Length ,SocketFlags.None , ipep );/ 将数据发送到指定的终结点data = new byte1024;int recv = server.ReceiveFrom ( data , ref Remote );/ 接受来自服务器的数据2.3 服务器 服务器接到连接请求后,产生一个新的Socket (端口大于1024)与客户端建立连接并进行通讯, 原侦听 Socket 继续侦听。 每个服务打开一个 socket ,并绑定到一个端口上,不同的端口对应不同的服务(应用程序)。3 结语许多 Internet 服务都可以见到 Socket 的踪影,如 Telnet 、 Http 、Email 、Echo 等,这些服务尽管通讯协议 Protocol 的定 义不同,但是其基础的传输都是采用的 Socket 。针对 Socket 编 程,框架的 Socket 类是 Winsock32 API 提供的套接字服务的托 管代码版本。 其中为实现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 景区门票优惠合同6篇
- 商务合同管理工具快速生成与审查合同文本
- 采购申请审批单物资名称规格详细说明
- 跨部门合作项目标准化流程模板
- 高级园长证考试题及答案
- 贵阳国企笔试试题及答案
- 生产安全与卫生标准化文件库
- 智能物流系统定制开发项目合同
- 金融行业考证题库及答案
- 2025年北京市安全员-A证考试题库带答案
- 村卫生室药品管理制度
- 掩耳盗铃儿童故事绘本PPT
- CIED植入围手术期抗凝治疗
- 《发现雕塑之美》第4课时《加法与减法的艺术》
- 澳门立法会间接选举制度及其实践
- 1-5年级英语单词
- GA 1551.3-2019石油石化系统治安反恐防范要求第3部分:成品油和天然气销售企业
- 2023年吉林省金融控股集团股份有限公司招聘笔试题库及答案解析
- 类风湿关节炎的中医治疗演示文稿
- 食品安全BRCGS包装材料全球标准第六版管理手册及程序文件
- 热工保护联锁投退管理规定
评论
0/150
提交评论