2024-04-02 10:46:18 +08:00

53 lines
1.3 KiB
Go

package main
import (
"fmt"
"math/rand"
"net"
"os"
"os/signal"
"syscall"
"time"
)
func main() {
// (Your flag definitions and random port selection logic here)
// Initialize a channel to listen for interrupt signals
sigs := make(chan os.Signal, 1)
// Register the channel to receive SIGINT and SIGTERM
signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM)
// Function to start a TCP listener on a specified port
startListener := func(port int) {
listener, err := net.Listen("tcp", fmt.Sprintf(":%d", port))
if err != nil {
fmt.Printf("Error starting TCP listener on port %d: %v\n", port, err)
return
}
defer listener.Close()
fmt.Printf("Listening on port %d...\n", port)
}
// Initialize the random number generator
rand.Seed(time.Now().UnixNano())
// Randomly select two ports between 10000 and 20000
port1 := rand.Intn(10001) + 10000 // This generates a number between 0-10000, then adds 10000
port2 := rand.Intn(10001) + 10000
// Ensure port2 is different from port1
for port2 == port1 {
port2 = rand.Intn(10001) + 10000
}
// Start TCP listeners on the selected ports
// (Assuming port1 and port2 are defined as per your logic)
go startListener(port1)
go startListener(port2)
// Wait for an interrupt signal
<-sigs
fmt.Println("Shutting down...")
}