AsyncSocket
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.
守护线程:程序在运行的时候,在后台提供通用服务的线程,比如垃圾回收线程。当所有的非守护线程结束的时候,程序终止,同时杀死进程中所有的守护线程。反过来说,只要非守护程序还在运行,程序就不会终止。
守护线程要注意以下几点:
- 守护线程在thread.start()之前设置,否则汇报IllegalThreadException异常。不能把正在运行的常规线程设置为守护线程
- 在Deamon 线程中产生的线程也是Daemon的
守护线程应该永远不去访问固有资源,如文件,数据库,因为他会在任何操作的时候发生中断。
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相关推荐
- socket第三方库 AsyncSocket(源码注释解读.转)
作者 OneTea 关注 2016.09.19 11:33* 字数 0 阅读 83评论 0喜欢 1 #import <Foundation/Foundation.h> @class Asy ...
- iOS学习之Socket使用简明教程- AsyncSocket
2019独角兽企业重金招聘Python工程师标准>>> 如果需要在项目中像QQ微信一样做到即时通讯,必须使用socket通讯,本人也是刚学习,分享一下,有什么不对的地方希望大家指正 ...
- iPhone开发之网络编程 AsyncSocket
转自 http://www.open-open.com/lib/view/open1338595161095.html iphone的CFNetwork编程比较艰深.使用AsyncSocket开源库来 ...
- iOS之Socket的使用-AsyncSocket
iOS有原生的socket,但AsyncSocket这个第三方库,对socket的封装比较好,本文就是基于AsyncSocket的使用介绍. 环境 下载AsyncSocket https://gith ...
- iOS - AsyncSocket 的使用
1.AsyncSocket 基于 CFSocket.GCD 进行的封装(OC). 支持 TCP 和 UDP. 完整的回调函数(用于处理各种回调事件,连接成功,断开连接,收到数据等). 需要注意的问题: ...
- socket第三方库 AsyncSocket(GCDAsyncSocket)
为什么80%的码农都做不了架构师?>>> Socket描述了一个IP.端口对.它简化了程序员的操作,知道对方的IP以及PORT就可以给对方发送消息,再由服务器端来处理发送的这些 ...
- iPhone的Socket编程使用开源代码之AsyncSocket
假如你也是一个java程序员,而你又不是很懂Socket. 下面我的这篇文章也许能帮助你一些. http://xiva.iteye.com/blog/993336 首先我们写好上面文章中的server ...
- IOS socket编程--Asyncsocket
iPhone的标准推荐是CFNetwork 库编程,其封装好的开源库是 cocoa AsyncSocket库,用它来简化CFNetwork的调用,它提供了异步操作 主要特性有: 队列的非阻塞的读和写, ...
- [转]: 用GCDAsyncSocket解决AsyncSocket读取数据时丢失部分消息
原文地址:http://blog.csdn.net/cdy2143/article/details/8963422 在项目中,一直都是用AsyncSocket的开源项目来做IOS的Socket的开发, ...
最新文章
- ACM图灵奖获得者:想从大数据中获益,先解决集成问题!
- 高级软件工程第二次作业
- python【蓝桥杯vip练习题库】ADV-298 和谐宿舍2(DP)
- DL之Panoptic Segmentation:Panoptic Segmentation(全景分割)的简介(论文介绍)、全景分割挑战简介、案例应用等配图集合之详细攻略
- Spring Boot JPA的查询语句
- win7系统的右键菜单只显示一个白色框不显示菜单项 解决办法
- 【VB.NET】实验 控件综合运用——“五一”商城大促の模拟
- NOI2019凉凉记
- C++静态成员总结(转)
- 【深度学习】生成对抗网络(GAN)的tensorflow实现
- VS2005进行WORD文档开发
- Visual Studio 水晶报表Crystal Reports
- 怎么卸载Office2007兼容包?
- ghost系统卡正在启动服务器,GHOST完后安装win7系统卡在正在启动windows界面...-华硕笔记本装win7,华硕win10改win7步骤...
- Java项目--网页版音乐播放器(Spring Boot 后端逻辑)
- excel取消合并单元格并填充内容的技巧
- PageHelper.startPage 的作用范围探究
- mysql 浮点类_MySQL浮点类型总结
- 计算机视频DVI接口,HDMI、DVI 电脑为什么会有这么多种视频接口?
- java 高cpu占用问题解决