Golang多个连接到TCP服务器

Golang多个连接到TCP服务器,第1张

概述我开发了一个小型GoLang TCP服务器来制作聊天应用程序.但是当我尝试将客户端连接到它时,服务器可以正常使用两个客户端,但每当我尝试连接第三个客户端时,它都没有连接到服务器.我在 Windows上运行.可能有什么问题可以帮助我吗? package mainimport ( "bufio" "fmt" "net")var allClients map[*Clie 我开发了一个小型Golang TCP服务器来制作聊天应用程序.但是当我尝试将客户端连接到它时,服务器可以正常使用两个客户端,但每当我尝试连接第三个客户端时,它都没有连接到服务器.我在 Windows上运行.可能有什么问题可以帮助我吗?

package mainimport (    "bufio"    "fmt"    "net")var allClIEnts map[*ClIEnt]inttype ClIEnt struct {    // incoming chan string    outgoing   chan string    reader     *bufio.Reader    writer     *bufio.Writer    conn       net.Conn    connection *ClIEnt}func (clIEnt *ClIEnt) Read() {    for {        line,err := clIEnt.reader.ReadString('\n')        if err == nil {            if clIEnt.connection != nil {                clIEnt.connection.outgoing <- line            }            fmt.Println(line)        } else {            break        }    }    clIEnt.conn.Close()    delete(allClIEnts,clIEnt)    if clIEnt.connection != nil {        clIEnt.connection.connection = nil    }    clIEnt = nil}func (clIEnt *ClIEnt) Write() {    for data := range clIEnt.outgoing {        clIEnt.writer.WriteString(data)        clIEnt.writer.Flush()    }}func (clIEnt *ClIEnt) Listen() {    go clIEnt.Read()    go clIEnt.Write()}func NewClIEnt(connection net.Conn) *ClIEnt {    writer := bufio.NewWriter(connection)    reader := bufio.NewReader(connection)    clIEnt := &ClIEnt{        // incoming: make(chan string),outgoing: make(chan string),conn:     connection,reader:   reader,writer:   writer,}    clIEnt.Listen()    return clIEnt}func main() {    allClIEnts = make(map[*ClIEnt]int)    Listener,_ := net.Listen("tcp",":8080")    for {        conn,err := Listener.Accept()        if err != nil {            fmt.Println(err.Error())        }        clIEnt := NewClIEnt(conn)        for clIEntList,_ := range allClIEnts {            if clIEntList.connection == nil {                clIEnt.connection = clIEntList                clIEntList.connection = clIEnt                fmt.Println("Connected")            }        }        allClIEnts[clIEnt] = 1        fmt.Println(len(allClIEnts))    }}
解决方法 你的代码很好.我在linux上编译,尝试了4个连接.一切都按预期工作. 总结

以上是内存溢出为你收集整理的Golang多个连接到TCP服务器全部内容,希望文章能够帮你解决Golang多个连接到TCP服务器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1265634.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-08
下一篇2022-06-08

发表评论

登录后才能评论

评论列表(0条)

    保存