现在的位置: 首页 > 综合 > 正文

ASP.Net 热身 之 Socket

2017年11月07日 ⁄ 综合 ⁄ 共 1658字 ⁄ 字号 评论关闭

什么是Socket
 通常我们叫做“套接字” 是一种进程通讯机制 用于描述IP地址和端口,是一个通讯链的句柄 说白了 就是两个程序通信用的
 
Socket的两种模式
 流式Socket
  是一种面向连接的Socket 针对于面向连接的TCP服务应用 安全 数据不会丢失 但是效率低 一次性通过之间建立的管道传输

 数据报式Socket
  是一种无连接的Socket 对应于无连接的UDP服务 不安全 比如数据丢失,顺序混乱 因为他是将数据分成 若干的单元进行传输的 效率高

 

创建一个Socket
Socket ListenSocket = null;
ListenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

 各个参数解释:
  AddressFamily.InterNetwork:表示使用的IPv4的格式(v6是InterNetworkv6)
  SocketType.Stream:表示Socket之间通讯使用的流的方式(Stream)
  ProtocolType.Tcp:表示Socket之间遵守的TCP协议

 

Socket的通讯过程
 服务器端
  1. 申请一个Socket
  2. 将IP和端口号绑定到这个Socket
  3. 开始监听,等待接收连接 
 客户端
  1.  申请一个Socket
  2. 指明IP和端口号 连接服务器

当两端连接以后 会创建一个新的Socket用来通讯 原来监听的Socket会继续监听

 举一个形象点的例子:
  当我们去面试的时候(我们是客户端) 要先去到面试的公司(公司所在的大厦是IP地址 具体几楼几号房间是端口号)
  当我们进入公司以后(两端连接上了) 首先是前台的客服人员接待我们(就好比是监听的Socket) 然后客服人员会将
  我们带到面试官面前(面试官就好比新建的一个通讯的Socket) 此时我们与面试官之间进行面试(建立连接以后 数据互相传输)
  客服人员会继续到前台等待来访的面试人员(监听的Socket会继续监听客服端发来的请求)

 

Socket的相关类和相关方法
 相关的类
  IPAddress类:包含了一个IP地址
  IPEndPoint类:包含了一对IP地址和端口号

 相关的方法
  Socket (): 创建一个Socket
  Bind(): 绑定一个本地的IP和端口号(IPEndPoint)
  Listen(): 让Socket侦听传入的连接尝试,并指定侦听队列容量
  Connect(): 初始化与另一个Socket的连接
  Accept(): 接收连接并返回一个新的socket
  Send(): 输出数据到Socket
  Receive(): 从Socket中读取数据
  Close(): 关闭Socket (销毁连接)
  
  
使用Socket一些注意事项
 1. 至少要定义一个要连接的远程主机的IP和端口号。
 2. 端口号必须在 1 和 65535之间,最好在1024以后 因为1024之前的好多被系统所占用
 3. 要连接远程主机 必须连接指定的正在监听的端口上
 4. 一个Socket一次只能连接一台主机。
 5. Socket关闭后无法再次使用。
 6. 每个Socket对象只能一台远程主机连接. 如果你想连接到多台远程主机, 你必须创建多个Socket对象

 

Socket连接流程
 

关于IP地址和端口
 什么是IP地址 :就是一台电脑在网络上的编号 这个是唯一的 就和一个家庭的门牌号码一样
 什么是端口:端口就是计算机中连接所有软件的通道 也是唯一的 范围在0~65535之间 我们自己编写的应用程序一般使用1024以后的  因为之前的有可能被系统软件所占用
 举个例子:如果说IP地址是一个家庭的门牌号 里面的各种软件是家庭里面不同的成员 那么 端口号就是来寻找不同家庭成员的方式
 

(作者注释:由于我的笔记是.doc格式的 所有的标题都有超链接以及标题颜色 如果直接复制过来的话会有格式不支持的情况 为了统一 我在全部转换成了txt 所以会没有颜色 希望大家见谅)

抱歉!评论已关闭.