小编Adz*_*mzf的帖子

如何在golang中单个TCP连接上同时写入和读取?

我尝试创建一个用于多个写和读并发的sigle TCP连接客户端.例如,TCP Server将像您编写的那样返回值.问题是写和读之间交换的数据.我尝试过sync.Mutex,但它仍然无效.

我的结果是:

2018/03/10 12:52:10 STRING 4:1
2018/03/10 12:52:10 STRING 5:6
2018/03/10 12:52:10 STRING 2:3
and so on
Run Code Online (Sandbox Code Playgroud)

我的期望是:

2018/03/10 12:52:10 STRING 4:4
2018/03/10 12:52:10 STRING 5:5
2018/03/10 12:52:10 STRING 2:2
2018/03/10 12:52:10 STRING 3:3
Run Code Online (Sandbox Code Playgroud)

这是我的代码:package main

import (
    "bufio"
    "log"
    "net"
    "strconv"
    "sync"
    "time"
)

type Cc struct {
    mux sync.Mutex
    rw  *bufio.ReadWriter
}

func main() {
    addr := "127.0.0.1:3333"
    log.Println("Dial " + addr)
    conn, err := net.Dial("tcp", addr)
    cc := Cc{
        rw: bufio.NewReadWriter(bufio.NewReader(conn), bufio.NewWriter(conn)),
    }

    if err …
Run Code Online (Sandbox Code Playgroud)

mutex tcpclient go

0
推荐指数
1
解决办法
934
查看次数

标签 统计

go ×1

mutex ×1

tcpclient ×1