socket支持下的网上点对点的通信_第1页
socket支持下的网上点对点的通信_第2页
socket支持下的网上点对点的通信_第3页
socket支持下的网上点对点的通信_第4页
全文预览已结束

下载本文档

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

文档简介

同步套接字通信 Socket 支持下的网上点对点的通信 服务端实现监听连接,客户端实现发送连接请求,建立连接后进行发送和接收数据的功能 服务器端建立一个 socket,设置好本机的 ip 和监听的端口与 socket 进行绑定,开始监 听连接请求,当接收到连接请求后,发送确认,同客户端建立连接,开始与客户端进行通 信。 客户端建立一个 socket,设置好服务器端的 IP 和提供服务的端口,发出连接请求,接收 到服务的确认后,尽力连接,开始与服务器进行通信。 服务器端和客户端的连接及它们之间的数据传送均采用同步方式。 Socket Socket 是 tcpip 网络协议接口。内部定义了许多的函数和例程。可以看成是网络通信的 一个端点。在网络通信中需要两个主机或两个进程。通过网络传递数据,程序在网络对话 的每一端需要一个 socket。 Tcp/IP 传输层使用协议端口将数据传送给一个主机的特定应用程序,协议端口是一 个应用程序的进程地址。传输层模块的网络软件模块要于另一个程序通信,它将使用协议 端口,socket 是运行在传输层的 api,使用 socket 建立连接发送数据要指定一个端口给 它。 Socket: Stream Socket 流套接字 Socket 提供双向、有序、无重复的数据流服务,出溜大量的 网络数据。 Dgram socket 数据包套接字 支持双向数据流,不保证传输的可靠性、有序、无重复。 Row socket 原始套接字 访问底层协议 建立 socket 用 C# 命名空间:using System.Net;using System.Net.Socket; 构造新的 socket 对象:socket 原型: Public socket (AddressFamily addressFamily,SocketType sockettype,ProtocolType protocolType) AddressFamily 用来指定 socket 解析地址的寻址方案。Inte.Network 标示需要 ip 版 本 4 的地址,Inte.NetworkV6 需要 ip 版本 6 的地址 SocketType 参数指定 socket 类型 Raw 支持基础传输协议访问,Stream 支持可靠,双 向,基于连接的数据流。 ProtocolType 表示 socket 支持的网络协议 定义主机对象: IPEndPoint 类:IPEndPoint 构造方法 位置:System.Net 原型:1) public IPEndPoint(IPAddress address,int port) 2)public IPEndPoint(long address,int port) 参数 1 整型 int64 如 123456,参数 2 端口 int32 主机解析: 利用 DNS 服务器解析主机,使用 Dns.Resolve 方法 原型:public static IPHostEntry Resolve(string hostname) 参数:待解析的主机名 称,返回 IPHostEntry 类值,IPHostEntry 为 Inte.Net 主机地址信息提供容器,该容器 提供存有 IP 地址列表,主机名称等。 Dns.GetHostByName 获取本地主机名称 原型:public static IPHostEntry GetHostByName(string hostname) GetHostByAddress 原型:1)public static IPHostEntry GetHostByAddress(IPAddress address) 参数: IP 地址 2)public static IPHostEntry GetHostByAddress(string address) IP 地址格 式化字符串 端口绑定和监听: 同步套接字服务器主机的绑定和端口监听 Socket 类的 Bind(绑定主机),Listen (监听端口),Accept(接收客户端的连接请求) Bind:原型:public void Bind(EndPoint LocalEP)参数为主机对象 IPEndPoint Listen:原型:public void Listen(int backlog) 参数整型数值,挂起队列最大值 accept:原型: public socket accept() 返回为套接字对象 演示程序: 1. 2. IPAddress myip=IPAddress.Parse(“”); 3. IPEndPoint myserver=new IPEndPoint(myip,2020); 4. Socket sock=new Socket(AddressFamily.Inte.Network,SocketType.Stream,ProtocolType.Tcp); 5. Sock.Bind(myserver); 6. Sock.Listen(50); 7. Socket bbb=sock.Accept(); 发送数据:方法 1:socket 类的 send 方法二.NetworkStream 类 Write send 原型: public int Send(byte buffer) 字节数组 public int Send(byte,SocketFlags)原型 2 说明,SocketFlags 成员列表: DontRoute(不使用路由表发送),MaxIOVectorLength(为发送和接收数据的 wsabuf 结构数量提供标准值)None 不对次调用使用标志) OutOfBand(消息的部分发送或接收) Partial(消息的部分发送或接收) Peek(查看传入的消息) 原型三:public int Send(byte,int,SocketFlags) 参数二要发送的字节数 原型四:public int Send(byte,int,int,SocketFlags) 参数二为 Byte中开始发送的 位置 演示: 1. 2. Socket bbb=sock.Accept(); 3. Byte bytes=new Byte64; 4. string send=“aaaaaaaaaaaa“; 5. bytes=System.Text.Encoding.BigEndianUnicode.GetBytes(send.ToCharArray() ; 6. bbb.Send(bytes,bytes.length,0);/将 byte 数组全部发送 7. .NetWordStream 类的 Write 方法发送数据 原型: 1. 2. public override void write(byte buffer,int offset,int size) 字节数组, 开始字节位置,总字节数 3. 4. Socket bbb=sock.Accept(); 5. .NetWorkStream stre=new NewWorkStream(bbb); 6. Byte ccc=new Byte512; 7. string sendmessage=“aaaaaaaaaaaaaa“; 8. ccc=System.Text.Encoding.BigEndianUnicode.GetBytes(sendmessage); 9. stre.Write(ccc,0,ccc.length); 接收数据:Socket 类 Receive.NetworkStream 类 Read Socket 类 Receive 方法 原型: 1. 2. public int Receive(byte buffer) 3. 2)public int Receive(byte,SocketFlags) 4. 3)public int Receive(byte,int,SocketFlags) 5. 4)public int Receive(byte,int,int,SocketFlags) 6. . 7. Socket bbb=sock.Accept(); 8. 9. Byte ccc=new Byte512; 10. bbb.Receive(ccc,ccc.Length,0); 11. string rece=System.Text.Encoding.BigEndianUnicode.GetString(ccc); 12. richTextBox1.AppendText(rece+“rn“); 13. 14. .NetworkStream 类的 Read 方法接收数据 15. public override int Read(int byte buffer,int offset,int size) 演示: 1. 2. bbb=sock

温馨提示

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

评论

0/150

提交评论