go 전송 파일 수신
package main
import (
"fmt"
"os"
"net"
"io"
)
//
func SendFile(path string,conn net.Conn){
//
f,err := os.Open(path)
if err != nil{
fmt.Println("os.Open err=",err)
return
}
defer f.Close()
buf := make([]byte,1024*4)
for{
n,err := f.Read(buf)
if err !=nil{
if err == io.EOF{
fmt.Println(" ")
}else{
fmt.Println(" f.Read err=",err)
}
return
}
//
conn.Write(buf[:n])
}
}
func main() {
//
fmt.Println(" ")
var path string
fmt.Scan(&path)
// info.Name()
info,err := os.Stat(path)
if err != nil{
fmt.Println("os.Stat err= ",err)
return
}
//
conn,err := net.Dial("tcp","127.0.0.1:8000")
if err !=nil{
fmt.Println("net.Dial err=",err)
return
}
//
_,err = conn.Write([]byte(info.Name()))
if err != nil{
fmt.Println("conn.Write err =",err)
return
}
var n int
buf := make([]byte,1024)
n,err = conn.Read(buf)
if err !=nil{
fmt.Println("conn.Read err=",err)
return
}
if "ok"== string(buf[:n]){
//
SendFile(path,conn)
}
}
package main
import (
"net"
"fmt"
"os"
"io"
)
//
func RecvFile(filename string,conn net.Conn) {
//
f,err := os.Create(filename)
if err != nil{
fmt.Println("os.Create err=",err)
return
}
buf := make([]byte,1024)
for{
n,err := conn.Read(buf) //
if err != nil{
if err == io.EOF{
fmt.Println(" ")
}else{
fmt.Println("conn.Read err=",err)
}
return
}
if n == 0{
fmt.Println("n==0 ")
break
}
f.Write(buf[:n])
}
}
func main() {
//
listernner,err := net.Listen("tcp","127.0.0.1:8000")
if err != nil{
fmt.Println("net.Listen err =",err)
return
}
defer listernner.Close()
//
conn,err := listernner.Accept()
if err != nil{
fmt.Println("listenner.Accept err=",err)
return
}
defer conn.Close()
//
buf := make([]byte,1024)
n,err := conn.Read(buf)
if err != nil{
fmt.Println("conn.Read err =",err)
return
}
filename := string(buf[:n])
// ok
conn.Write([]byte("ok"))
//
RecvFile(filename,conn)
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.