Например, имея базовый пакетный протокол, например:
[packageType int] [packetId int] [data [] byte]
И заставить клиента и сервер делать простые вещи (например, в чате).
Вот клиент и сервер с небрежной обработкой ошибок паники.У них есть некоторые ограничения:
Вот клиент.Он отправляет один пакет с типом пакета 0, идентификатором 0 и содержимым «Hello, server».Затем он ждет ответа, печатает его и выходит.
package main import ( "encoding/binary" "fmt" "net" ) type packet struct { Type int32 Id int32 Data [100]byte } func main() { // connect to localhost on port 2000 conn, err := net.Dial("tcp", ":2000") if err != nil { panic(err.String()) } defer conn.Close() // send a packet msg := packet{} copy(msg.Data[:], "Hello, server") err = binary.Write(conn, binary.BigEndian, &msg) if err != nil { panic(err.String()) } // receive the response var response packet err = binary.Read(conn, binary.BigEndian, &response) if err != nil { panic(err.String()) } fmt.Printf("Response: %s\n", response.Data) }
Проверьте Ян 100% * "Сетевое программирование на Go" Яна Ньюмарха