我们拿最常用的send和recv两个函数来说吧,比如:你调用send函数发送一定的Byte,在系统内部send做的工作其实只是把数据传输(Copy)到TCP/IP协议栈的输出缓冲区,它执行成功并不代表数据已经成功的发送出去了,如果TCP/IP协议栈没有足够的可用缓冲区来保存你Copy过来的数据的话,这时候就体现出阻塞和非阻塞的不同之处了:

对于阻塞模式的socket 来说send函数将不返回直到系统缓冲区有足够的空间把你要发送的数据Copy过去以后才返回,

对于非阻塞模式的socket来说send会立即返回WSAEWOULDDBLOCK告诉调用者说:"发送操作被阻塞了!!!仅仅是将数据拷贝到协议栈的缓存区而已,如果缓存区可用空间不够,则尽能力的拷贝,立即返回成功拷贝的大小;如缓存区可用空间为0,则返回-1,同时设置errno为EAGAIN.

对于recv函数,同样道理,该函数的内部工作机制其实是在等待TCP/IP协议栈的接收缓冲区通知它说:嗨,你的数据来了.

SOCKET与 线程 完成聊天室 非阻塞相关推荐

  1. Socket编程实现简易聊天室

    1.Socket基础知识 Socket(套接字)用于描述IP地址和端口,是通信链的句柄,应用程序可以通过Socket向网络发出请求或者应答网络请求. Socket是支持TCP/IP协议的网络通信的基本 ...

  2. java socket多人聊天室_如何运用Java socket实现多人聊天室功能

    如何运用Java socket实现多人聊天室功能 导语:如何运用Java socket实现多人聊天室功能呢?下面是小编给大家提供的代码实现,大家可以参考阅读,更多详情请关注应届毕业生考试网. 目录结构 ...

  3. 使用python基于socket的tcp服务器聊天室

    # coding=utf-8 import socket,threading,time '''代码说明:1.创建一个字典用于接受客户端的用户名和信息2.创建一个类对象client用于编写客户端套接字对 ...

  4. java socket多人聊天_如何运用Java socket实现多人聊天室功能

    导语:如何运用Java socket实现多人聊天室功能呢?下面是小编给大家提供的代码实现,大家可以参考阅读,更多详情请关注应届毕业生考试网. 目录结构: ChatClient: package com ...

  5. Express+Socket.IO 实现简易聊天室

    代码地址如下: http://www.demodashi.com/demo/12477.html 闲暇之余研究了一下 Socket.io,搭建了一个简易版的聊天室,如有不对之处还望指正,先上效果图: ...

  6. 基于socket.io的web聊天室

    基于socket.io的web聊天室 一. 项目介绍 该项目使用node.js作为后端服务器框架,并利用socket.io来实现web聊天室功能.socket.io是由 JavaScript 实现的基 ...

  7. Linux下基于socket和多线程的聊天室小程序

    转载:http://blog.csdn.net/robot__man/article/details/52460733 要求:基于TCP编写,一个聊天室最多100人.  客户端:  1.用户需要登录, ...

  8. 基于TCP原理,采用Socket通信技术,实现聊天室

    文章目录 案例一 案例二 案例三 案例四 案例五 相关案例 案例一 Client.java package SocketCode;import java.awt.Color; import java. ...

  9. c#的Socket实现多人聊天室(附源码)

    在计算机通信领域,socket 被翻译为"套接字",它是计算机之间进行通信的一种约定或一种方式.通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机 ...

最新文章

  1. Java Enumeration接口
  2. C++ 中判断非空的错误指针
  3. anaconda下tensorflow安装遇到的问题记录及解决办法
  4. 《云计算揭秘企业实施云计算的核心问题》——导读
  5. Atom React或前端插件推荐
  6. 基于JAVA+SpringMVC+Mybatis+MYSQL的OA办公系统
  7. android 开机打开串口失败,请大神帮我看看这是怎么回事,一用就说串口打开失败,再电脑上试...
  8. 30个Oracle语句优化规则详解(1)
  9. 爬虫之requests库的使用
  10. Entity Framework 全面教程详解
  11. 正确理解TensorFlow中的logits
  12. AutoCAD2012官方原版软件下载
  13. matlab做多元统计分析,matlab多元统计分析
  14. H3C 交换机配置命令
  15. 目前常用的4种备份系统架构
  16. Win10喇叭图标出现红叉提示未安装任何音频输出设备
  17. offer收割者!Alibaba内部独家MySQL优化宝典横空出世,再也不用担心被面试官拦路了
  18. 转载 SpringMVC详解(一)------入门实例
  19. 关于国际论文中,国内外人名顺序的问题
  20. Unity 灯光及光照烘焙

热门文章

  1. Linux学习笔记1(鸟哥的私房菜)
  2. 【iOS开发】Mansory自动布局(autolayout)使用教程
  3. 我在大厂写React学到了什么?性能优化篇
  4. 汽车电子MCU开发之路
  5. python matplotlib绘制 3D图像专题 (三维柱状图、曲面图、散点图、曲线图合集)
  6. mysql 死锁问题 Lock wait timeout exceeded; try restarting transaction
  7. 阅读笔记之《守破离》
  8. 狐妖小红娘手游服务器维护,狐妖小红娘手游官网-腾讯游戏
  9. 2.12黑马培训日记
  10. PR CC 2018添加素材时出现绿色/紫色横线