/**
文件传输服务端
*/
package main
import (
"fmt"
"net"
"os"
"io"
)
//接收文件内容
func RecvFile(fileName string,conn net.Conn){
//新建文件
f,err:=os.Create(fileName)
if err!=nil{
fmt.Println("os.Create err=",err)
return
}
defer f.Close()
buf:=make([]byte,2048)
//接收多少,写多少
for{
n,err:=conn.Read(buf)
if err!=nil{
if err==io.EOF{
break
}else{
fmt.Println("os.Open err=",err);
return
}
}
f.Write(buf[:n])//往文件写入内容
}
fmt.Println("文件接收ok")
}
func main(){
//监听
listener,err:=net.Listen("tcp","127.0.0.1:8000")
if err!=nil{
fmt.Println("err=",err)
return
}
//结束时关闭监听
defer listener.Close()
//阻塞等待用户连接
conn,err2:=listener.Accept()
if err2!=nil{
fmt.Println("err2",err2)
return
}
defer conn.Close()
//接收用户的请求
buf:=make([]byte,1024)
n,err3:=conn.Read(buf)
if err3!=nil{
fmt.Println("err3",err3)
return
}
fmt.Println("收到文件名filename=",string(buf[:n]))
fileName:=string(buf[:n])
//回复ok
conn.Write([]byte("ok"))
fmt.Println("现在可以发送")
//接收文件内容
RecvFile(fileName,conn)
/**
输出:
F:\goWorkSpace\study\06通信编程>go run 07_文件传输recv服务端.go
收到文件名filename= python3.6.6.rar
现在可以发送
文件接收ok
*/
}
6.7 go 文件tcp传输服务端
猜你喜欢
转载自blog.csdn.net/h4241778/article/details/105500137
今日推荐
周排行