Commit d2dafe18 authored by nanahira's avatar nanahira

rename again

parent 87f3e105
Pipeline #834 passed with stage
in 4 minutes and 6 seconds
...@@ -100,49 +100,49 @@ func UnpackData2(buf []byte) (addr *net.UDPAddr, data []byte) { ...@@ -100,49 +100,49 @@ func UnpackData2(buf []byte) (addr *net.UDPAddr, data []byte) {
} }
func transferGuestTrafficToHost(client *net.UDPConn, server *net.UDPConn, clientAddr *net.UDPAddr, serverAddr *net.UDPAddr) { func transferHostTrafficToGuest(host *net.UDPConn, guest *net.UDPConn, hostAddr *net.UDPAddr, guestAddr *net.UDPAddr) {
buffer := make([]byte, 2048) buffer := make([]byte, 2048)
for { // guest send to host for {
length, _, _ := client.ReadFromUDP(buffer) length, _, _ := host.ReadFromUDP(buffer)
server.WriteToUDP(buffer[:length], serverAddr) guest.WriteToUDP(buffer[:length], guestAddr)
} }
} }
func transferHostTrafficToGuest(client *net.UDPConn, server *net.UDPConn, clientAddr *net.UDPAddr, serverAddr *net.UDPAddr, channel chan []byte) { func transferGuestTrafficToHost(host *net.UDPConn, guest *net.UDPConn, hostAddr *net.UDPAddr, guestAddr *net.UDPAddr, channel chan []byte) {
for { // host send to guest for {
message := <-channel message := <-channel
client.WriteToUDP(message, clientAddr) host.WriteToUDP(message, hostAddr)
} }
} }
func listenUDP(ws *websocket.Conn) { func listenUDP(ws *websocket.Conn) {
server, err := net.ListenUDP("udp", nil) guest, err := net.ListenUDP("udp", nil)
if err != nil { if err != nil {
log.Println(err) log.Println(err)
return return
} }
serverChannelList := make(map[string]chan []byte) guestChannelList := make(map[string]chan []byte)
reply := fmt.Sprintf("LISTEN %s:%d", IP, server.LocalAddr().(*net.UDPAddr).Port) reply := fmt.Sprintf("LISTEN %s:%d", IP, guest.LocalAddr().(*net.UDPAddr).Port)
ws.Write([]byte(reply)) ws.Write([]byte(reply))
for { for {
message := make([]byte, 2048) message := make([]byte, 2048)
length, serverAddr, _ := server.ReadFromUDP(message) length, guestAddr, _ := guest.ReadFromUDP(message)
channel, ok := serverChannelList[serverAddr.String()] channel, ok := guestChannelList[guestAddr.String()]
if !ok { if !ok {
client, err := net.ListenUDP("udp", nil) host, err := net.ListenUDP("udp", nil)
if err != nil { if err != nil {
log.Println(err) log.Println(err)
return return
} }
reply = fmt.Sprintf("CONNECT %s:%d", IP, client.LocalAddr().(*net.UDPAddr).Port) reply = fmt.Sprintf("CONNECT %s:%d", IP, host.LocalAddr().(*net.UDPAddr).Port)
ws.Write([]byte(reply)) ws.Write([]byte(reply))
_, clientAddr, _ := client.ReadFromUDP(make([]byte, 2048)) _, hostAddr, _ := host.ReadFromUDP(make([]byte, 2048))
reply = fmt.Sprintf("CONNECTED %s:%d", IP, client.LocalAddr().(*net.UDPAddr).Port) reply = fmt.Sprintf("CONNECTED %s:%d", IP, host.LocalAddr().(*net.UDPAddr).Port)
ws.Write([]byte(reply)) ws.Write([]byte(reply))
client.WriteToUDP(message[:length], clientAddr) host.WriteToUDP(message[:length], hostAddr)
go transferGuestTrafficToHost(client, server, clientAddr, serverAddr) // guest send to host go transferHostTrafficToGuest(host, guest, hostAddr, guestAddr)
channel := make(chan []byte) channel := make(chan []byte)
serverChannelList[serverAddr.String()] = channel guestChannelList[guestAddr.String()] = channel
go transferHostTrafficToGuest(client, server, clientAddr, serverAddr, channel) // host send to guest go transferGuestTrafficToHost(host, guest, hostAddr, guestAddr, channel)
} else { } else {
channel <- message[:length] channel <- message[:length]
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment