Server
listener,err:=net.Listen("tcp","127.0.0.1:8006")
if err!=nil {
fmt.Print(err)
return
}
defer listener.Close()
conn,err:=listener.Accept()
if err!=nil {
fmt.Print(err)
return
}
defer conn.Close()
buf:=make([]byte,1024)
n,err:=conn.Read(buf)
if err!=nil {
fmt.Print(err)
return
}
conn.Write([]byte("ok"))
filename:=string(buf[:n])
func(conn net.Conn,filename string) {
fp,err:=os.Create("/Users/zmx/"+filename)
if err!=nil {
fmt.Print(err)
return
}
defer fp.Close()
buf:=make([]byte,1024)
for {
n,err:=conn.Read(buf)
if err!=nil {
fmt.Print(err)
return
}
fp.Write(buf[:n])
}
}(conn,filename)
Client
filePath:="/Users/zmx/go/180726/src/main/index.go"
fileinfo,err:=os.Stat(filePath)
if err!=nil {
fmt.Print(err)
return
}
filename:=fileinfo.Name()
conn,err:=net.Dial("tcp","127.0.0.1:8006")
if err!=nil {
fmt.Print(err)
return
}
defer conn.Close()
conn.Write([]byte(filename))
buf:=make([]byte,1024)
n,err:=conn.Read(buf)
if err!=nil {
fmt.Print(err)
return
}
if string(buf[:n])=="ok" {
func(conn net.Conn,filePath string) {
fp,err:=os.Open(filePath)
if err!=nil {
fmt.Print(err)
return
}
defer fp.Close()
buf:=make([]byte,1024)
for {
n,err:=fp.Read(buf)
if err!=nil {
if err==io.EOF {
return
} else {
fmt.Print(err)
return
}
}
conn.Write(buf[:n])
}
}(conn,filePath)
}