handler.Receive(bytes)什么时候返回?

文档:

如果没有可用于读取的数据,则接收方法将阻塞,直到数据可用,除非使用Socket.ReceiveTimeout设置超时值 . 如果超出超时值,则Receive调用将抛出SocketException . 如果您处于非阻塞模式,并且协议堆栈缓冲区中没有可用数据,则Receive方法将立即完成并抛出SocketException . 您可以使用Available属性来确定数据是否可供读取 . 当Available为非零时,重试接收操作 .

当它“溢出”并且接收到超过1024个字节时,它是否返回并存储int bytesRec中接收的字节数?

不,它总是返回已读取的字节数 . 如果没有,你怎么知道 bytes 的哪些部分包含有意义的数据,哪些部分仍未使用?

理解套接字通常是如何工作的是 very important :字节可能到达数据包,但就接收器而言,每个字节应该独立考虑 . 这意味着无法保证您将获取发件人发送的块中的字节,当然也无法保证有足够的数据来填充缓冲区 .

如果您只想处理1024字节块中的传入数据,那么继续调用 Receive 是您自己的责任,直到它总共释放了1024个字节为止 .

如果是这样,这可能听起来很愚蠢,如果更多字节到达会发生什么,因为它在变量中存储了1024个字节而没有监听可能在那时到达的更多字节?

让我们重申 Receive 将不会在缓冲区中存储1024个字节,因为它的大小为's the buffer' . 它将存储_2425613_ 1024字节 .

如果网络堆栈内部缓冲的数据多于缓冲区可以容纳的数据,则会将1024个字节返回给您,其余的将保留在网络堆栈的缓冲区中,直到再次调用 Receive 为止 . 如果 Receive 已经开始将数据复制到缓冲区,那时从网络接收到更多数据,那么很可能会发生的情况是这些将不得不等待下一次 Receive 呼叫 .

毕竟,在任何时候都没有人提供保证 Receive 会给你所有的数据(尽管当然这是可取的,这是大多数时候发生的事情) .

java中receive功能,Socket.Receive什么时候返回数据?相关推荐

  1. java 需要返回类型_在Java中,当一个方法不需要返回数据时返回类型必须是

    [问答题]在滑动轴承中什么是瓦背?其特点有哪些? [多选题]起重机采用变频调速改造后,有哪些效果? [判断题]当热继电器动作不准确时,可用弯折双金属片的方法来调整. [单选题]X62W型万能铣床进给电 ...

  2. Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制

    JAVA 中原生的 socket 通信机制 转载自:https://github.com/jasonGeng88/blog 当前环境 jdk == 1.8 知识点 socket 的连接处理 IO 输入 ...

  3. 浅谈JAVA中如何利用socket进行网络编程(二)

    转自:http://developer.51cto.com/art/201106/268386.htm Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以 ...

  4. java nextint后有空格,Java中nextInt()后接nextLine()读取不到数据

    Java中nextInt()后接nextLine()读取不到数据 Java中nextInt()后接nextLine()读取不到数据 问题: 在使用Scanner对象的nextLine()函数读取输入的 ...

  5. java 打开url连接访问不了,android 应用Java自带的HttpURLConnection 连接网络 读取返回数据...

    android 使用Java自带的HttpURLConnection 连接网络 读取返回数据 @Override protected void onCreate(Bundle savedInstanc ...

  6. connect: 网络不可达_Java网络编程和NIO详解1:JAVA 中原生的 socket 通信机制

    本文转自:https://github.com/jasonGeng88/blog 本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 https ...

  7. 带有谓词的Java中的功能样式-第1部分

    您一直在听到将要席卷全球的函数式编程,而您仍然坚持使用普通Java? 不用担心,因为您已经可以在日常Java中添加一些功能样式. 此外,它很有趣,可以节省许多代码行并减少错误. 什么是谓词? 实际上, ...

  8. Android之在Java socket作为服务器里面返回数据头部怎么写入浏览器需要下载文件的文件名

    1 问题 Android app里面写了一个Java socket的简单服务器,在浏览器里面输入相应的IP和端口访问服务器下载文件,Java socket怎么写返回数据的头部信息,浏览器才知道需要下载 ...

  9. JAVA中两个char类型相加_5.16--java数据类型转换及杂记

    我们先来回顾一下前面学的java中的数据类型: java中数据类型分为基本数据类型和引用型数据类型 8种基本数据类型(值类型) 整型:byte(-128~127).short.int.long lon ...

最新文章

  1. python 替换字符串中的元素
  2. ActivityManagerService知识点
  3. CelebA数据集在Linux下解压
  4. opencv imread
  5. 第三次学JAVA再学不好就吃翔(part59)--冒泡排序选择排序以及二分查找
  6. laravel引入自定义全局函数
  7. GitHub上如何删除fork别人的repository
  8. 《浪潮之巅》完全系类——IT人士必读经典
  9. Unplugged In Newyork
  10. 微橙人人店 php,最新微橙人人店分销3.5.7整站源码,全开源任意二开,新增及修复多项功能,附升级补丁...
  11. 美团外卖返利小程序-饿了么外卖返利公众号系统 – 程序侠
  12. 2016年5月27日更新后MSYS2的shell用法
  13. skiller3.31 发布
  14. 关于看算法导论不懂的时候的思考
  15. opencv两张图片叠加显示
  16. 麦肯锡高管的逻辑树分析大法!
  17. Latex写文章时插入单栏图片和双栏图片方法
  18. word标题前面存在竖线
  19. 如何完成中英文语音翻译?
  20. 魔都蹭课、观光、酱油记

热门文章

  1. 注解slf4j的使用
  2. 基于MATLAB的车载自组织网络(Vehicular Ad-hoc Network VANET)的通信系统的仿真
  3. 【Linux】一步一步学Linux——readelf命令(253)
  4. 人民币汇率破7,跨境电商卖家,现在提款划算吗?
  5. Appium安装技巧
  6. 学习前端——原神官网hover效果实现
  7. 如同使用postman实现接口签名
  8. 自然语言处理中的中文词性、标记规范及其应用
  9. 使用 Visual Studio 分析器找出应用程序瓶颈(转)
  10. 国际WTI原油价格日、周、月、年度数据(1986.01-2019.02)