0
点赞
收藏
分享

微信扫一扫

udp连接

服务端

package main

import (
"fmt"
"log"
"net"
)
func main(){
updaddr,err:=net.ResolveUDPAddr("udp","127.0.0.1:8003")//udp结构体
if err != nil {
log.Println("create udp is error")
}
UDPConn,err:= net.ListenUDP("udp",updaddr)//监听udp
if err != nil {
log.Println("create udp is error")
}
defer UDPConn.Close()

buf:=make([]byte,4096)
n,cAddr,err:=UDPConn.ReadFromUDP(buf)//读取

fmt.Println(string(buf[:n]),cAddr)
_,err=UDPConn.WriteToUDP([]byte("this is server info"),cAddr)//写入
if err != nil {
log.Println(err)
}

}

客户端

package main

import (
"fmt"
"log"
"net"
)

func main(){
conn,err:= net.Dial("udp","127.0.0.1:8003")
if err != nil {
log.Println("is errors")
}
defer conn.Close()
conn.Write([]byte("aaaaaaaaaaaaaaaaaaaaaaaaaaa"))
buf:=make([]byte,4096)
n,_:=conn.Read(buf)
fmt.Println(string(buf[:n]))
}

udp传输文件

服务端

package main

import (
"fmt"
"log"
"net"
"os"
)
func reInfo(conn *net.UDPConn, fileName string){
fd,_:= os.Create(fileName)
defer fd.Close()
defer conn.Close()
buf:=make([]byte,4096)
for {
n,caddr,err:=conn.ReadFromUDP(buf)
fmt.Println(n)
if err != nil {
fmt.Println("is error")
return
}
if n == 0 {
fmt.Println("finish end file content")
return
}

fmt.Println("客户端",caddr,"内容:",string(buf[:n]))
fd.Write(buf[:n])
}
}
func main(){
udpaddr,err:=net.ResolveUDPAddr("udp","127.0.0.1:8006")
if err != nil {
log.Println("udpaddr is error")
return
}
UdpConn,err:=net.ListenUDP("udp",udpaddr)
if err != nil {
log.Println("conn is eroror")
}
buf:=make([]byte,1024)
n,caddr,_:=UdpConn.ReadFromUDP(buf)
fmt.Println(caddr)
fileName:= string(buf[:n])

reInfo(UdpConn,fileName)
}

客户端

package main

import (
"fmt"
"io"
"log"
"net"
"os"
)

func sendConn(conn net.Conn, filePath string){
defer conn.Close()
buf:=make([]byte,4096)
fd,_:= os.Open(filePath)
for {
n,err:=fd.Read(buf)
if err == io.EOF {
fmt.Println("read file is end")
return
}
conn.Write(buf[:n])
}
}

func main(){
conn,err:= net.Dial("udp","127.0.0.1:8006")
if err != nil {
log.Println("conn is errors")
return
}
lists:=os.Args
if len(lists) != 2 {
log.Println("is erros")
return
}
filePath:= lists[1]
fileInfo,err:=os.Stat(filePath)
if err != nil {
log.Println("is erros")
}
fileName:= fileInfo.Name()
io.WriteString(conn,fileName)
sendConn(conn,filePath)
}

举报

相关推荐

0 条评论