How to write a user defined struct object in net.Conn.Write()

huangapple go评论84阅读模式
英文:

How to write a user defined struct object in net.Conn.Write()

问题

我有一个简单的TCP服务器在一个端口上监听。如何在net.Conn.Write()中编写一个用户定义类型的对象?

我的代码如下:

func main() {
    ln, err := net.Listen("tcp", ":2000")
    if err != nil {
        log.Fatal(err)
    }

    msgchan := make(chan string)
    for {
        conn, err := ln.Accept()
        if err != nil {
            log.Println(err)
            continue
        }	
    }
}

net.Conn.Write()中,你可以将用户定义类型的对象转换为字节流,然后将其写入连接。你可以使用encoding/json包将对象编码为JSON格式,然后使用conn.Write()将JSON字节流写入连接。以下是一个示例:

import (
    "encoding/json"
    "log"
    "net"
)

type User struct {
    Name  string
    Email string
}

func main() {
    ln, err := net.Listen("tcp", ":2000")
    if err != nil {
        log.Fatal(err)
    }

    for {
        conn, err := ln.Accept()
        if err != nil {
            log.Println(err)
            continue
        }

        user := User{
            Name:  "John Doe",
            Email: "johndoe@example.com",
        }

        jsonBytes, err := json.Marshal(user)
        if err != nil {
            log.Println(err)
            continue
        }

        _, err = conn.Write(jsonBytes)
        if err != nil {
            log.Println(err)
        }

        conn.Close()
    }
}

在上面的示例中,我们定义了一个User结构体,并在main()函数中创建了一个User对象。然后,我们使用json.Marshal()User对象编码为JSON字节流,并使用conn.Write()将字节流写入连接。请注意,我们在写入完成后关闭了连接。

英文:

I have a simple TCP server listening on a port. How to write an object of type user defined in net.Conn.Write()?

My code is given below:

func main() {
	ln, err := net.Listen("tcp", ":2000")
	if err != nil {
		log.Fatal(err)
	}

	msgchan := make(chan string)
	for {
		conn, err := ln.Accept()
		if err != nil {
			log.Println(err)
			continue
		}	
	}
}

答案1

得分: 1

你必须将对象序列化为[]byteio.Reader

标准库中的一些解决方案包括gobjson

英文:

You have to serialize the object into a []byte or io.Reader

Some solutions in the standard library include gob and json.

huangapple
  • 本文由 发表于 2017年4月15日 20:32:16
  • 转载请务必保留本文链接:https://go.coder-hub.com/43426100.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定