Seltsames Verhalten von golang UDP-server

Schrieb ich einen einfachen UDP-server gehen.

Wenn ich go run udp.go druckt er alle Pakete, die ich senden, um es. Aber beim laufen go run udp.go > out hört es vorbei stdout zu den out - Datei, wenn der client beendet.

Client ist einfaches Programm, das sendet 10k Anfragen. Also in der Datei habe ich rund 50% der gesendeten Pakete. Wenn ich den client wieder, der out Datei wächst wieder, bis das client-Skript abgeschlossen ist.

Server-code:

package main

import (
  "net"

  "fmt"
)

func main() {
  addr, _ := net.ResolveUDPAddr("udp", ":2000")
  sock, _ := net.ListenUDP("udp", addr)

  i := 0
  for {
    i++
    buf := make([]byte, 1024)
    rlen, _, err := sock.ReadFromUDP(buf)
    if err != nil {
      fmt.Println(err)
    }
    fmt.Println(string(buf[0:rlen]))
    fmt.Println(i)
    //go handlePacket(buf, rlen)
  }
}

Und hier ist der client-code:

package main

import (
  "net"

  "fmt"
)

func main() {

  num := 0
  for i := 0; i < 100; i++ {
    for j := 0; j < 100; j++ {
      num++
      con, _ := net.Dial("udp", "127.0.0.1:2000")
      fmt.Println(num)
      buf := []byte("bla bla bla I am the packet")
      _, err := con.Write(buf)
      if err != nil {
        fmt.Println(err)
      }
    }
  }
}
  • Sie ignorieren mehrere mögliche Fehler, sowohl in der client-und der server. Wenn Sie mit Ihrem client, wird es sofort warf einen runtime error. Nach dem hinzufügen einer Fehler-check: "wählen Sie udp 127.0.0.1:2000: too many open files". Wenn Sie nicht wissen, ob das problem relevant ist, aber ich würde Sie bitten, hinzufügen, prüft alle möglichen Fehler, und wenn das nicht dazu führen, dass Sie die Lösung für Ihr problem, wieder hierher kommen, mit den Ergebnissen 🙂
  • Ich fügte hinzu, Fehler überprüfen und haben keine solchen Probleme. Client funktioniert, getestet habe ich es mit einem anderen server. Es sieht so aus, Umleitung macht lag bei der Lektüre auf-Buchse, und einige Pakete fehlen....
InformationsquelleAutor Sławosz | 2013-10-29
Schreibe einen Kommentar