We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
系统: CentOS Linux release 7.7.1908 (Core)
复现:
将example/echo的代码里的 out = data 改为 c.Send(data)
然后执行
go run echo.go
tcpkali --workers 8 -c 200 -T 30s -em "\x70" 127.0.0.1:1833
// HandleEvent 内部使用,供 event loop 回调处理事件 func (l *Listener) HandleEvent(fd int, events poller.Event) { if events&poller.EventRead != 0 { nfd, sa, err := unix.Accept(fd) if err != nil { if err != unix.EAGAIN { log.Error("accept:", err) } return } if err := unix.SetNonblock(nfd, true); err != nil { _ = unix.Close(nfd) log.Error("set nonblock:", err) return } l.handleC(nfd, sa) } }
将会执行 log.Error("accept:", err) 的代码 err是 socket operation on non-socket或 bad file descriptor
The text was updated successfully, but these errors were encountered:
我现在手头没Linux电脑,晚上试一下。
你说的现象是必现吗?
out = data 和 c.Send(data) ,两种会有不同的现象吗?
Sorry, something went wrong.
out = data 和 c.Send(data) 好像没不同现象 在linux下使用epoll就会有这种情况 listene改为如下就好了
acceptFd, err := unix.Socket(unix.AF_INET, unix.SOCK_STREAM, 0) if err != nil { panic(err) } _, _, port := parseAddr(s.addr) sockaddrInet4 := &unix.SockaddrInet4{ Port: port, Addr: [4]byte{0, 0, 0, 0}, } err = unix.Bind(acceptFd, sockaddrInet4) if err != nil { panic(err) } err = unix.Listen(acceptFd, 100) if err != nil { panic(err) }
可以提供一下运行报错的log截图吗
No branches or pull requests
系统:
CentOS Linux release 7.7.1908 (Core)
复现:
将example/echo的代码里的 out = data 改为 c.Send(data)
然后执行
go run echo.go
tcpkali --workers 8 -c 200 -T 30s -em "\x70" 127.0.0.1:1833
将会执行 log.Error("accept:", err) 的代码 err是 socket operation on non-socket或 bad file descriptor
The text was updated successfully, but these errors were encountered: