V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  monkeyWie  ›  全部回复第 30 页 / 共 32 页
回复总数  623
1 ... 22  23  24  25  26  27  28  29  30  31 ... 32  
2020-03-03 10:34:47 +08:00
回复了 skypyb 创建的主题 Blogger 有一个持续更新了两年的博客,终于 有一天带给了我惊喜
卧槽,看完这个帖子我去翻了翻我的邮箱,发现也有收到,是华为的,华为 2012 实验室-可信理论、计算与工程实验室-开源软件部,不知道真的假的啊
2020-02-27 18:00:01 +08:00
回复了 monkeyWie 创建的主题 Go 编程语言 golang UDP 协议读取报文问题
@BBCCBB 都一样的,read()底层也是调用的 ReadFrom(),这个 @rio 就是个睿智,说了半天就一直在那秀优越,前面说的也全是错的,真的是 talk is cheap
2020-02-27 17:36:58 +08:00
回复了 monkeyWie 创建的主题 Go 编程语言 golang UDP 协议读取报文问题
@BBCCBB r 就是一个*net.UDPConn
2020-02-27 17:06:59 +08:00
回复了 monkeyWie 创建的主题 Go 编程语言 golang UDP 协议读取报文问题
@BBCCBB udp 读估计每次都是一个完整的 udp 报文,不存在和 tcp 那样用 Read()一次性读不完,所以我现在只要用最大字节数的 buf 去 Read()一次就行了,不用 io.ReadFull 了,毕竟响应的报文不一定有这么长,这个方法肯定阻塞。

@ma6254 现在没有 ReadFull()了,可能是 TCP 写多了,之前以为 UDP 和 TCP 一样可以这样读。 🤓
2020-02-27 16:36:05 +08:00
回复了 monkeyWie 创建的主题 Go 编程语言 golang UDP 协议读取报文问题
@BBCCBB 我现在只能确定 udp 响应包的最大长度,但是真实的响应可能没这么长,我看了 ioutil.ReadAll 源码,是要遇到 io.EOF 或者其它异常(比如超时)才能返回,但是 udp 协议并不存在关闭连接也就不会有 io.EOF ,所以我这里调用的话应该是一直阻塞着直到超时
2020-02-27 16:25:14 +08:00
回复了 monkeyWie 创建的主题 Go 编程语言 golang UDP 协议读取报文问题
@BBCCBB 用 ioutil.ReadAll 也不对呀,不是读完这次就 EOF,后面还有呢
2020-02-27 15:58:29 +08:00
回复了 monkeyWie 创建的主题 Go 编程语言 golang UDP 协议读取报文问题
@ma6254 n 我打印出来过了,都是 20 😂,其实是因为有 err,io.ReadFull()里面把 err 忽略掉了。
```
func ReadAtLeast(r Reader, buf []byte, min int) (n int, err error) {
if len(buf) < min {
return 0, ErrShortBuffer
}
for n < min && err == nil {
var nn int
nn, err = r.Read(buf[n:])
// nn=20,err!=nil
n += nn
}
if n >= min {
//读到了指定的字节数就置空 err
err = nil
} else if n > 0 && err == EOF {
err = ErrUnexpectedEOF
}
return
}
```
2020-02-27 15:55:25 +08:00
回复了 monkeyWie 创建的主题 Go 编程语言 golang UDP 协议读取报文问题
@ma6254 谢谢老哥耐心解答,我找到原因了,原来一直有 err 返回,只是 io.ReadFull()在读取到指定字节会把 err 置空,

错误信息:`wsarecv: A message sent on a datagram socket was larger than the internal message buffer or some other network limit, or the buffer used to receive a datagram into was smaller than the datagram itself.`

看样子 upd 接收的缓冲区一定要大于要接收的这次报文,所以你 8L 提供的那种方法也是行不通的,现在我是直接开辟一个大点的 buf 用 conn.Read()接收,只能这样做了
2020-02-27 15:14:45 +08:00
回复了 monkeyWie 创建的主题 Go 编程语言 golang UDP 协议读取报文问题
@rio 大佬,第一个返回值不是读取到的字节数吗,和这个问题有啥关联啊?还请赐教
2020-02-27 13:42:40 +08:00
回复了 monkeyWie 创建的主题 Go 编程语言 golang UDP 协议读取报文问题
@BOYPT 不会的,TCP 协议的话读满之后还可以接着读后面的报文
2020-02-27 13:40:26 +08:00
回复了 monkeyWie 创建的主题 Go 编程语言 golang UDP 协议读取报文问题
@back0893 那如果不知道包的大小咋办,一般 body 的长度都放在 head 里,所以先读了一次 head
2020-02-26 17:43:12 +08:00
回复了 Drinker 创建的主题 Java 一个 Java 项目如果需要启用上万个 websocket,有什么好办法么
java 上 netty 轻松搞定好吧
2020-02-24 11:30:39 +08:00
回复了 tianshiyeben 创建的主题 程序员 开源项目有感
确实伸手党太多,之前弄了 4 个 QQ 群感觉人都快被问没了,后来也没时间维护了索性停了,现在产生了后遗症,不想打开 qq
2020-02-14 09:31:06 +08:00
回复了 monkeyWie 创建的主题 GitHub github 头像服务被墙了吗,看的好难受
@CoCoMcRee 刚刚测了几个 IP,改下 host 可以了 🤓
151.101.40.133 avatars2.githubusercontent.com
151.101.40.133 avatars0.githubusercontent.com
2020-02-06 17:18:06 +08:00
回复了 monkeyWie 创建的主题 深圳 回深圳光钎被老鼠咬断了
@OllyDebug 发现限速也还行,正常办公没什么问题,就是游戏更新不动难受 🥴
2020-02-04 20:30:28 +08:00
回复了 monkeyWie 创建的主题 程序员 有公司落地了数据库异地多活方案吗?
@opengps 数据同步的延迟问题怎么解决的啊?
2020-02-04 20:24:36 +08:00
回复了 dannnney 创建的主题 酷工作 [深圳][15k-35k] 这里有一个很有爱的技术团队招人啦~
离我住的地方太远了,不然可以试下
2020-02-03 11:26:27 +08:00
回复了 OMGZui 创建的主题 程序员 今天开始在家办公了,使用腾讯会议
今天在家用钉钉远程办公,还行就是不知道做什么
2020-01-26 19:57:28 +08:00
回复了 monkeyWie 创建的主题 问与答 没有鼠标有没有办法玩游戏
@loading 想玩 RPG 🤣
2020-01-19 18:37:04 +08:00
回复了 zzzmh 创建的主题 Java 问个问题, Java 有没有办法接入 gpu 运算,想写个暴力破解压缩包
笑死,这种暴力破解竟然是 io 密集型,难道你打开一个 10g 的加密压缩文件在输错密码之后要等 10g 数据验证完才提示密码错误吗
1 ... 22  23  24  25  26  27  28  29  30  31 ... 32  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1092 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 23:44 · PVG 07:44 · LAX 15:44 · JFK 18:44
Developed with CodeLauncher
♥ Do have faith in what you're doing.