V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
V2EX  ›  monkeyWie  ›  全部回复第 35 页 / 共 37 页
回复总数  729
1 ... 27  28  29  30  31  32  33  34  35  36 ... 37  
2020 年 3 月 30 日
回复了 bfqymmt 创建的主题 Docker docker 如何快速更换 jar 包
为啥要停止删除 docker,一般在前面跑一个 nginx 负载均衡,两个容器做滚动升级就好了
@yulihao x-forwarded-for 不行啊,目标服务器基本都是直接拿的 remote_ip
@Raynard 有例子吗?
@jangit 客户端出网是外网 ip 呀,代理服务器和客户端不是一个局域网下的,代理服务器单独部署在外网。
@ThirdFlame 额,可能我没太说明白,我现在的角色是客户端和代理服务器,就是想让别人知道我的真实 ip,而不是代理服务器 ip
测试了一下,初步怀疑是 http1.0 协议的客户端直接被 pass,但是我用 curl 指定 http2.0 协议请求也是 403,但是验证肯定还是在 TLS 这层,不是 http 这层,估计 curl 和浏览器的 TLS 握手还是有区别的。
卧槽,看完这个帖子我去翻了翻我的邮箱,发现也有收到,是华为的,华为 2012 实验室-可信理论、计算与工程实验室-开源软件部,不知道真的假的啊
2020 年 2 月 27 日
回复了 monkeyWie 创建的主题 Go 编程语言 golang UDP 协议读取报文问题
@BBCCBB 都一样的,read()底层也是调用的 ReadFrom(),这个 @rio 就是个睿智,说了半天就一直在那秀优越,前面说的也全是错的,真的是 talk is cheap
2020 年 2 月 27 日
回复了 monkeyWie 创建的主题 Go 编程语言 golang UDP 协议读取报文问题
@BBCCBB r 就是一个*net.UDPConn
2020 年 2 月 27 日
回复了 monkeyWie 创建的主题 Go 编程语言 golang UDP 协议读取报文问题
@BBCCBB udp 读估计每次都是一个完整的 udp 报文,不存在和 tcp 那样用 Read()一次性读不完,所以我现在只要用最大字节数的 buf 去 Read()一次就行了,不用 io.ReadFull 了,毕竟响应的报文不一定有这么长,这个方法肯定阻塞。

@ma6254 现在没有 ReadFull()了,可能是 TCP 写多了,之前以为 UDP 和 TCP 一样可以这样读。 🤓
2020 年 2 月 27 日
回复了 monkeyWie 创建的主题 Go 编程语言 golang UDP 协议读取报文问题
@BBCCBB 我现在只能确定 udp 响应包的最大长度,但是真实的响应可能没这么长,我看了 ioutil.ReadAll 源码,是要遇到 io.EOF 或者其它异常(比如超时)才能返回,但是 udp 协议并不存在关闭连接也就不会有 io.EOF ,所以我这里调用的话应该是一直阻塞着直到超时
2020 年 2 月 27 日
回复了 monkeyWie 创建的主题 Go 编程语言 golang UDP 协议读取报文问题
@BBCCBB 用 ioutil.ReadAll 也不对呀,不是读完这次就 EOF,后面还有呢
2020 年 2 月 27 日
回复了 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 年 2 月 27 日
回复了 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 年 2 月 27 日
回复了 monkeyWie 创建的主题 Go 编程语言 golang UDP 协议读取报文问题
@rio 大佬,第一个返回值不是读取到的字节数吗,和这个问题有啥关联啊?还请赐教
2020 年 2 月 27 日
回复了 monkeyWie 创建的主题 Go 编程语言 golang UDP 协议读取报文问题
@BOYPT 不会的,TCP 协议的话读满之后还可以接着读后面的报文
2020 年 2 月 27 日
回复了 monkeyWie 创建的主题 Go 编程语言 golang UDP 协议读取报文问题
@back0893 那如果不知道包的大小咋办,一般 body 的长度都放在 head 里,所以先读了一次 head
java 上 netty 轻松搞定好吧
2020 年 2 月 24 日
回复了 tianshiyeben 创建的主题 程序员 开源项目有感
确实伸手党太多,之前弄了 4 个 QQ 群感觉人都快被问没了,后来也没时间维护了索性停了,现在产生了后遗症,不想打开 qq
2020 年 2 月 14 日
回复了 monkeyWie 创建的主题 GitHub github 头像服务被墙了吗,看的好难受
@CoCoMcRee 刚刚测了几个 IP,改下 host 可以了 🤓
151.101.40.133 avatars2.githubusercontent.com
151.101.40.133 avatars0.githubusercontent.com
1 ... 27  28  29  30  31  32  33  34  35  36 ... 37  
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3015 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 21ms · UTC 13:28 · PVG 21:28 · LAX 06:28 · JFK 09:28
♥ Do have faith in what you're doing.