In the Go Guide, Web server, error report: Listen TCP 127.0.0.1:4000: BIND: only one usage of each socket address (Protocol/Network Address/Port) Is Normally Permitted Analysis Solution
1. Refer to the Go guide, web server, write file: web-servers.go
Package main
import (
"fmt"
"log"
"net/http"
)
type hello struct{}
Func (H Hello) ServeHttp(
w http.responsewriter,
r *http.request) {
fmt.fprint(w, "Hello!")
}
func main() {
var h hello
err := http.listenandserve("localhost:4000", h)
if err != nil {
log.fatal(err)
}
}
2. Run in PowerShell: go run web-servers.go, report error: listen tcp 127.0.0.1:4000: bind: only one usage of each Socket address (protocol/network address/port) is normally permitted, as shown in Figure 1
PS E:\wwwroot\go\methods> go run web-servers.go 2020/01/09 16:13:46 listen TCP 127.0.0.1:4000: BIND: only one usage of each socket address (protocol/network address/por t) is normally permitted. exit status 1
3. Enter: netstat -ano in PowerShell, check all the port occupancy, and see that the port (4000) in the program is already active (in use) in another program. as shown in Figure 2
PS e:\wwwroot\go\methods> netstat -ano mobile connection Protocol Local Address External Address Status PID TCP 0.0.0.0:80 0.0.0.0:0 Listening 313324 TCP 0.0.0.0:135 0.0.0.0:0 Listening 1104 TCP 0.0.0.0:445 0.0.0.0:0 Listening 4 TCP 0.0.0.0:3306 0.0.0.0:0 Listening 5520 TCP 0.0.0.0:4301 0.0.0.0:0 Listening 297232 TCP 0.0.0.0:5040 0.0.0.0:0 Listening 8872 TCP 0.0.0.0:5826 0.0.0.0:0 Listening 213692 TCP 0.0.0.0:6379 0.0.0.0:0 Listening 6436 TCP 0.0.0.0:7680 0.0.0.0:0 Listening 964 TCP 0.0.0.0:10001 0.0.0.0:0 Listening 212304 TCP 0.0.0.0:19531 0.0.0.0:0 Listening 5444 TCP 0.0.0.0:20531 0.0.0.0:0 Listening 7760 TCP 0.0.0.0:49664 0.0.0.0:0 Listening 888 TCP 0.0.0.0:49665 0.0.0.0:0 Listening 804 TCP 0.0.0.0:49666 0.0.0.0:0 Listening 1784 TCP 0.0.0.0:49667 0.0.0.0:0 Listening 2364 TCP 0.0.0.0:49668 0.0.0.0:0 Listening 4184 TCP 0.0.0.0:49671 0.0.0.0:0 Listening 880 TCP 127.0.0.1:4000 0.0.0.0:0 listening 313996 TCP 127.0.0.1:4000 127.0.0.1:54674 close_wait 313996 TCP 127.0.0.1:4000 127.0.0.1:55244 close_wait 313996 TCP 127.0.0.1:4000 127.0.0.1:55279 close_wait 313996 TCP 127.0.0.1:4000 127.0.0.1:55291 close_wait 313996 TCP 127.0.0.1:4000 127.0.0.1:55298 close_wait 313996 TCP 127.0.0.1:4000 127.0.0.1:55306 close_wait 313996 TCP 127.0.0.1:4000 127.0.0.1:55442 Established 313996 TCP 127.0.0.1:4012 0.0.0.0:0 Listening 7804 TCP 127.0.0.1:4013 0.0.0.0:0 Listening 7804
4. Port 4000 is occupied by the process number 313996, open the task manager, find the process with pid 313996, select – end task – end the process, as shown in Figure 3
5. Run again in powershell: go run web-servers.go, no error is reported
PS E:\wwwroot\go\methods> go run web-servers.go


