我们平时可以多个用户往一个服务器中上传文件,这是可以通过TCP编程来做到的,我们只要结合go语言的并发,就可以做到
先是服务器
package main import ( "net" "os" //"fmt" "io" "fmt" ) func main() { tcpaddr, _ := net.ResolveTCPAddr("tcp", ":34521") //确定IP地址 listener, _ := net.ListenTCP("tcp", tcpaddr) //监听端口 for { conn, _ := listener.Accept() //请求连接 fmt.Println("有客户端连入",conn.RemoteAddr()) d := make([]byte, 2048) go func(conn net.Conn) { f1, _ := os.OpenFile("e:\\205.jpg", os.O_WRONLY|os.O_CREATE, 0777) for { count, err := conn.Read(d) //收到客户端出来的文件 开始读 if err != nil { break } f1.Write(d[:count]) //把读到的内容写到文件里保存下来 } }(conn) conn.Close() //关闭连接 } } }
然后是客户端
package main import ( "net" "io/ioutil" "fmt" ) func main(){ tcpaddr,_:=net.ResolveTCPAddr("tcp","192.168.31.168:34521")//确定服务器的地址 tcpconn,_:=net.DialTCP("tcp",nil,tcpaddr)//申请连接 defer tcpconn.Close()//完事后关闭 d,_:=ioutil.ReadFile("D:\\205.jpg") //读取本地文件 tcpconn.Write(d) //把文件写给服务器 fmt.Println(len(d)) }