Go socket

Go socket

什么是socket

Socket起源于Unix,而Unix基本哲学之一就是“一切皆文件”,都可以用“打开open –> 读写write/read –> 关

闭close”模式来操作。Socket就是该模式的一个实现,网络的Socket数据传输是一种特殊的I/O,Socket也

是一种文件描述符。Socket也具有一个类似于打开文件的函数调用:Socket(),该函数返回一个整型的

Socket描述符,随后的连接建立、数据传输等操作都是通过该Socket实现的。

常用的Socket类型有两种:流式Socket( SOCK_STREAM) 和数据报式Socket( SOCK_DGRAM) 。流

式是一种面向连接的Socket,针对于面向连接的TCP服务应用;数据报式Socket是一种无连接的Socket,

对应于无连接的UDP服务应用。

TCP 连接

服务端

package main

import (
    "fmt"
    "io/ioutil"
    "net"
)

func main() {
    service := ":3000"
    tcpAddr, _ := net.ResolveTCPAddr("tcp4", service)
    listen, _ := net.ListenTCP("tcp", tcpAddr)
    for {
        conn, err := listen.Accept()
        if err != nil {
            continue
        }
        result, _ := ioutil.ReadAll(conn)
        fmt.Println(string(result))
        conn.Close()
    }
}

客户端

多协程服务端

UDP连接

服务端

客户端

socket ssl 加密

[生成自签证书](https://www.cnblogs.com/lihuang/articles/4205540.html\

服务端

客户端

Last updated

Was this helpful?