mirror of
https://github.com/impact-eintr/netstack.git
synced 2025-10-28 23:01:44 +08:00
wsl code edit
This commit is contained in:
@@ -1,46 +1,46 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net"
|
||||
"runtime"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type TCPHandler interface {
|
||||
Handle(net.Conn)
|
||||
}
|
||||
|
||||
func TCPServer(listener net.Listener, handler TCPHandler) error {
|
||||
log.Printf("TCP: listening on %s", listener.Addr())
|
||||
|
||||
for {
|
||||
clientConn, err := listener.Accept()
|
||||
if err != nil {
|
||||
if nerr, ok := err.(net.Error); ok && nerr.Temporary() {
|
||||
log.Printf("temporary Accept() failure - %s", err)
|
||||
runtime.Gosched()
|
||||
continue
|
||||
}
|
||||
// theres no direct way to detect this error because it is not exposed
|
||||
if !strings.Contains(err.Error(), "use of closed network connection") {
|
||||
return fmt.Errorf("listener.Accept() error - %s", err)
|
||||
}
|
||||
break
|
||||
}
|
||||
go handler.Handle(clientConn)
|
||||
}
|
||||
|
||||
log.Printf("TCP: closing %s", listener.Addr())
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func main() {
|
||||
_, err := net.Dial("tcp", "192.168.1.1:9999")
|
||||
if err != nil {
|
||||
fmt.Println("err : ", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net"
|
||||
"runtime"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type TCPHandler interface {
|
||||
Handle(net.Conn)
|
||||
}
|
||||
|
||||
func TCPServer(listener net.Listener, handler TCPHandler) error {
|
||||
log.Printf("TCP: listening on %s", listener.Addr())
|
||||
|
||||
for {
|
||||
clientConn, err := listener.Accept()
|
||||
if err != nil {
|
||||
if nerr, ok := err.(net.Error); ok && nerr.Temporary() {
|
||||
log.Printf("temporary Accept() failure - %s", err)
|
||||
runtime.Gosched()
|
||||
continue
|
||||
}
|
||||
// theres no direct way to detect this error because it is not exposed
|
||||
if !strings.Contains(err.Error(), "use of closed network connection") {
|
||||
return fmt.Errorf("listener.Accept() error - %s", err)
|
||||
}
|
||||
break
|
||||
}
|
||||
go handler.Handle(clientConn)
|
||||
}
|
||||
|
||||
log.Printf("TCP: closing %s", listener.Addr())
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func main() {
|
||||
_, err := net.Dial("tcp", "192.168.1.1:9999")
|
||||
if err != nil {
|
||||
fmt.Println("err : ", err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user