登录
首页 >  Golang >  Go问答

go语言remoteAddr返回的是server的监听地址?

来源:SegmentFault

时间:2023-01-28 17:34:19 278浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《go语言remoteAddr返回的是server的监听地址?》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

我建立的是TCP连接,但是很奇怪的是,当我在client端输出remoteAddr的时候输出的是server的监听地址,难道不应该输出server新建的用于处理client的conn地址吗?好奇怪啊。。。
client:

package main

 import (
    "log"
    "net"
    "fmt"
)
func main() {
    log.Println("begin dial...")
    conn, err := net.Dial("tcp", ":8888")
    if err != nil {
        log.Println("dial error:", err)
        return
    }
    fmt.Println(conn.RemoteAddr())
    defer conn.Close()
    log.Println("dial ok")
}

server:

package main

import (
    "net"
    "fmt"
)

func handleConn(c net.Conn) {
    defer c.Close()
    for {

    }
}

func main() {
    l, err := net.Listen("tcp", ":8888")
    if err != nil {
        fmt.Println("listen error:", err)
        return
    }

    for {
        c, err := l.Accept()

        fmt.Println(c.RemoteAddr())
        if err != nil {
            fmt.Println("accept error:", err)
            break
        }

        go handleConn(c)
    }
}

正确答案

server新建的用于处理client的conn地址
根本木有这个地址好么。
如何标示一个socket链接? serverip,serverport,clientip,clientport。

本篇关于《go语言remoteAddr返回的是server的监听地址?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>