1.AsyncSocket与SyncSocket区别

Socket 分为 同步,异步,阻塞,非阻塞。
阻塞  block 当拨打某热电话,但是此人不在,你拿电话等他回来,期间不能再用电话,
非阻塞 nonblock 当拨打某人带你花,此人不在,你挂断电话,等会儿再打。即轮询/POLL.
异步      你打电话,此人不在,你叫接电话的人,告诉那人,回来后跟你打电话。

同步异步指通信模式

阻塞非阻塞指 在接收和发送时,是否等待动作完成才返回。

在实现过程中,如果服务端是异步的,客户端也是异步的,通信效率会很高。但是如果服务端在请求的返回时,也是返回给请求的链路时,客户端是可以同步的。这种情况下,服务端兼容同步和异步。

2.IPEndPoint

要与远程主机进行通信,仅有IP是不够的。在Internet中,TCP/IP 使用一个网路地址和一个服务端口号来唯一标识
设备和服务。网路地址标识网络上的设备号;端口号表示该设备上的特定服务。网络地址和服务端口的组合称为端点。
在c#中,使用IPEndPoint来表示这个终点。该类 包含应用程序链接到 主机的服务 所需的IP 和 端口地址。
构造函数:public IPEndPoint(IPAddress ,int).

3.阻塞和非阻塞

Windows 套接字 在两种模式下 执行I/O 操作,阻塞和非阻塞。在阻塞模式下,在I/O操作完成前,执行操作的函数会一直执行下去,不会立即返回程序。而在非阻塞模式下,winsock函数无论如何都会立即返回。在同步模式中,对执行网路操作的函数 如 send 和 receive 的调用,一直等到操作完成后,才将控制权返回给调用程序。
在异步模式中,这些调用将立即返回控制权。

4.Semaphore 发出新型号装置。信号量。

5.Daemon Thread 守护线程

线程分为两类:
  • 用户线程 UserThread
  • 守护线程 Daemon Thread.

    守护线程:程序在运行的时候,在后台提供通用服务的线程,比如垃圾回收线程。当所有的非守护线程结束的时候,程序终止,同时杀死进程中所有的守护线程。反过来说,只要非守护程序还在运行,程序就不会终止。

    守护线程要注意以下几点:

  1. 守护线程在thread.start()之前设置,否则汇报IllegalThreadException异常。不能把正在运行的常规线程设置为守护线程
  2. 在Deamon 线程中产生的线程也是Daemon的
  3. 守护线程应该永远不去访问固有资源,如文件,数据库,因为他会在任何操作的时候发生中断。

    6.AsyncSocketUserToken .

    用于AsyncSocketUserToken绑定,保存每个Socket服务对象,
    包括:m_receiveEventArgs 接收数据异步事件
    m_asyncReceiveBuffer 接收数据异步事件使用的缓存
    m_sendEventArgs 发送数据异步事件
    m_receiveBuffer 接收异步事件返回的数据存放缓存
    m_sendBuffer 保存发送的数据缓存

4.IOCPSocketServer

m_asyncSocketUserTokenPool.管理所有空闲的

7.Semaphore 信号量

Semaphore 负责协调各个线程,以保证它们能够正确的,合理的使用公共资源。也是操作系统中,用于控制进程同步互斥的量。信号量Semaphore常用的方法:WaitOne(),Relase().
Release() 作用:退出信号,并返回前一个计数。
WaitOne() 阻止当前线程,直到当前线程的WaitHandle接收到信号。Semaphore  sema=new Seamphore(x,y);x:剩余的位置数量y:总的位置数量

8.Socket

(1)new Socket(IPEndPoint.AddressFamily,SocketType.Stream,ProtocolType.Tcp);
Socket()有三个参数,
*   domain 协议簇,通常支持IPV4,IPV6,AF_LOCAL,AF_UINX等
*   type .Socket类型.通常长有STREAM,DARAM,SOCK_RAW等
*   protocal .协议。通常用TCP,DUP,STCP,TICP等。
(2)bind()函数
bind()把地址族中的特定地址赋给socket .了例如AF_INET 就是把ipv4或者Ipv6的地址和端口组合给Socket
(3)listen()函数如果作为一个服务器,Socket(),Bind()之后,就会调用Listen()来监听这个Socket.如果客户端这时候调用connect()来发出链接请求,服务器端就会接收到这个请求。
int listen(int sockfd,int backlog);
int connect(int sockfd,const struct sockaddr);
(4)accept()函数TCP服务器端 一次调用 socket(),bind(),listen()之后,就会监听指定的Socket地址。TCP客户端 依次调用了socket(),connect()之后,就向TCP服务端发送一个链接请求,TCP服务端监听到这个请求后,就会调用accept()来接收这个请求,这样就建立好了链接。之后可以进行I/O操作。
(5)recv(),send()至此 服务器与客户端已经建立好链接了,可以调用I/O进行读写。实现网路中不同进程之间的通信。网络I/O操作*   read()/write()*   recv()/send()*   readv()/writev()*   recvmsg()/sendmsg()*   recvfrom()/sendto()
(6)

转载于:https://www.cnblogs.com/sujingnuli/p/9359875.html

AsyncSocket相关推荐

  1. socket第三方库 AsyncSocket(源码注释解读.转)

    作者 OneTea 关注 2016.09.19 11:33* 字数 0 阅读 83评论 0喜欢 1 #import <Foundation/Foundation.h> @class Asy ...

  2. iOS学习之Socket使用简明教程- AsyncSocket

    2019独角兽企业重金招聘Python工程师标准>>> 如果需要在项目中像QQ微信一样做到即时通讯,必须使用socket通讯,本人也是刚学习,分享一下,有什么不对的地方希望大家指正 ...

  3. iPhone开发之网络编程 AsyncSocket

    转自 http://www.open-open.com/lib/view/open1338595161095.html iphone的CFNetwork编程比较艰深.使用AsyncSocket开源库来 ...

  4. iOS之Socket的使用-AsyncSocket

    iOS有原生的socket,但AsyncSocket这个第三方库,对socket的封装比较好,本文就是基于AsyncSocket的使用介绍. 环境 下载AsyncSocket https://gith ...

  5. iOS - AsyncSocket 的使用

    1.AsyncSocket 基于 CFSocket.GCD 进行的封装(OC). 支持 TCP 和 UDP. 完整的回调函数(用于处理各种回调事件,连接成功,断开连接,收到数据等). 需要注意的问题: ...

  6. socket第三方库 AsyncSocket(GCDAsyncSocket)

    为什么80%的码农都做不了架构师?>>>    Socket描述了一个IP.端口对.它简化了程序员的操作,知道对方的IP以及PORT就可以给对方发送消息,再由服务器端来处理发送的这些 ...

  7. iPhone的Socket编程使用开源代码之AsyncSocket

    假如你也是一个java程序员,而你又不是很懂Socket. 下面我的这篇文章也许能帮助你一些. http://xiva.iteye.com/blog/993336 首先我们写好上面文章中的server ...

  8. IOS socket编程--Asyncsocket

    iPhone的标准推荐是CFNetwork 库编程,其封装好的开源库是 cocoa AsyncSocket库,用它来简化CFNetwork的调用,它提供了异步操作 主要特性有: 队列的非阻塞的读和写, ...

  9. [转]: 用GCDAsyncSocket解决AsyncSocket读取数据时丢失部分消息

    原文地址:http://blog.csdn.net/cdy2143/article/details/8963422 在项目中,一直都是用AsyncSocket的开源项目来做IOS的Socket的开发, ...

最新文章

  1. ACM图灵奖获得者:想从大数据中获益,先解决集成问题!
  2. 高级软件工程第二次作业
  3. python【蓝桥杯vip练习题库】ADV-298 和谐宿舍2(DP)
  4. DL之Panoptic Segmentation:Panoptic Segmentation(全景分割)的简介(论文介绍)、全景分割挑战简介、案例应用等配图集合之详细攻略
  5. Spring Boot JPA的查询语句
  6. win7系统的右键菜单只显示一个白色框不显示菜单项 解决办法
  7. 【VB.NET】实验 控件综合运用——“五一”商城大促の模拟
  8. NOI2019凉凉记
  9. C++静态成员总结(转)
  10. 【深度学习】生成对抗网络(GAN)的tensorflow实现
  11. VS2005进行WORD文档开发
  12. Visual Studio 水晶报表Crystal Reports
  13. 怎么卸载Office2007兼容包?
  14. ghost系统卡正在启动服务器,GHOST完后安装win7系统卡在正在启动windows界面...-华硕笔记本装win7,华硕win10改win7步骤...
  15. Java项目--网页版音乐播放器(Spring Boot 后端逻辑)
  16. excel取消合并单元格并填充内容的技巧
  17. PageHelper.startPage 的作用范围探究
  18. mysql 浮点类_MySQL浮点类型总结
  19. 计算机视频DVI接口,HDMI、DVI 电脑为什么会有这么多种视频接口?
  20. java 高cpu占用问题解决

热门文章

  1. beego2---入门
  2. dijkstra 最短路算法
  3. Firewoks——层与蒙版
  4. Tcl8.6原生支持oop了
  5. JavaScript(JS)常用的正则表达式
  6. Windows Server 2008密码重设盘
  7. weblogic 12 开启debug端口配置
  8. (14)Vivado开发流程(FPGA不积跬步101)
  9. (50)FPGA状态机描述(三段式)
  10. (25)System Verilog类外约束类内变量