Je souhaite utiliser UDP et TCP l'un à côté de l'autre. quand je commente le travail partiel de la partie TCP UDP et quand je commente le travail partiel de la partie TCP d'UDP. J'ai besoin d'envoyer des messages avec TCP utilise alors en partie UDPGolang UDP et TCP l'un à côté de l'autre
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: En passant une partie de tcp ou d'une partie udp dans une fonction et l'appeler comme aller tcpserver(), nous pouvons utiliser les deux UDP et TCP les uns avec les autres
Yo Vous êtes engagé dans une boucle infinie qui accepte les connexions TCP, et vous vous attendez à ce qu'il sorte magiquement et tombe dans votre deuxième boucle infinie qui gère UDP entrant. Ça ne marchera pas. Pas clair pourquoi vous pensez qu'il devrait. – EJP
La liaison de deux protocoles dans un port n'est généralement pas possible en réseau. – jeevatkm
'Je veux utiliser UDP et TCP les uns avec les autres. TCP ne communique pas avec UDP. –