Ich möchte UDP und TCP nebeneinander verwenden. wenn ich TCP-Teil UDP Teil Arbeit kommentieren und wenn ich UDP Teil TCP-Teil kommentieren Arbeit. Ich brauche dann in UDP TeilGolan UDP und TCP nebeneinander
func main() {
//
// ─── TCP ────────────────────────────────────────────────────────────────────
//
// Listen for incoming connections.
l, err := net.Listen("tcp", "localhost"+":"+"3000")
if err != nil {
fmt.Println("Error listening:", err.Error())
os.Exit(1)
}
// Close the listener when the application closes.
defer l.Close()
fmt.Println("Listening on " + "localhost" + ":" + "3000")
for {
// Listen for an incoming connection.
conn, err := l.Accept()
if err != nil {
fmt.Println("Error accepting: ", err.Error())
os.Exit(1)
}
// Handle connections in a new goroutine.
go gotcp.HandleRequest(conn)
//go handler(conn)
}
//
// ─── UDP ────────────────────────────────────────────────────────────────────
//
// then we should check which struct is empty and fill them
/* Lets prepare a address at any address at port 10001*/
ServerAddr, err := net.ResolveUDPAddr("udp", ":3000")
goudp.CheckError(err)
/* Now listen at selected port */
ServerConn, err := net.ListenUDP("udp", ServerAddr)
goudp.CheckError(err)
defer ServerConn.Close()
buf := make([]byte, 1024)
for {
n, addr, err := ServerConn.ReadFromUDP(buf)
//fmt.Println("Received ", string(buf[0:n]), " from ", addr)
if err != nil {
fmt.Println("Error: ", err)
}
// *** broadcasting
//start := time.Now()
if v, ok := goudp.RRoom()[djr]; ok {
//fmt.Println("get room name ", v)
go goudp.BroadCast(string(buf[0:n]), djr, ServerConn, v)
//delete(R, "x")
//go sendResponse(ServerConn, v.UserAddr1)
}
//elapsed := time.Since(start)
//log.Printf("Binomial took %s", elapsed)
}
}
EDIT verwenden einige Nachrichten mit TCP senden: Indem tcp Teil oder udp an einer Funktion und nennen Sie es wie gehen tcpserver() Wir beide UDP und TCP verwenden können miteinander
Yo Sie sind an einer Endlosschleife beteiligt, die TCP-Verbindungen akzeptiert, und Sie erwarten, dass sie auf magische Weise endet und in Ihre zweite Endlosschleife fällt, die das eingehende UDP verarbeitet. Es wird nicht funktionieren. Unklar warum du denkst es sollte. – EJP
In der Regel ist das Verbinden von zwei Protokollen zu einem Port in Netzwerken nicht möglich. – jeevatkm
'Ich möchte UDP und TCP miteinander verwenden. TCP kommuniziert nicht mit UDP. –