sou*_*esi 0 sockets ip tcp go server
收到连接后conn, err := listener.Accept(),我想在另一端找到客户端的地址conn.我已尝试用conn.LocalAddr()和 conn.RemoteAddr()(文档)这样做..LocalAddr()只是给出服务器进程的地址..RemoteAddr()为客户端提供正确的IP,但是我知道要绑定到的客户端的端口号非常不同.如果它有任何区别,我会在同一台机器上运行两个独立的进程.一个是客户端,一个是服务器.关于我怎样才能找到正确的IP的任何想法:客户端的端口?我可以使用LocalAddr或者RemoteAddr?
在OSX上,使用go 1.4,conn.RemoteAddr()与netstat输出进行比较时,报告的主机/端口组合是正确的.
package main
import (
"fmt"
"net"
"time"
)
func main() {
ln, err := net.Listen("tcp", ":8080")
if err != nil {
panic(err)
}
for {
conn, err := ln.Accept()
if err != nil {
panic(err)
}
fmt.Println(conn.RemoteAddr())
time.Sleep(time.Minute)
conn.Close()
}
}
$ go run foo.go
127.0.0.1:63418
$ netstat -an | grep 8080
tcp4 0 0 127.0.0.1.8080 127.0.0.1.63418 ESTABLISHED
tcp4 0 0 127.0.0.1.63418 127.0.0.1.8080 ESTABLISHED
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7213 次 |
| 最近记录: |