storrent/main.go
Hojun-Cho aa0c61139f Add announcePeer feature.
TODO:
	fix sync write
	congestion control
	Request timeout
2026-01-22 13:55:29 +09:00

48 lines
1005 B
Go

package main
import (
"context"
"flag"
"log"
"net"
"github.com/knusbaum/go9p"
"storrent/client"
"storrent/dht"
"storrent/fs"
"storrent/utp"
)
func main() {
addr := flag.String("addr", ":5640", "9P listen address")
dir := flag.String("dir", "./download", "download directory")
udpPort := flag.Int("port", 6881, "UDP port (DHT + uTP)")
btPort := flag.Int("bt", 0, "BT listen port (TCP)")
bootstrap := flag.String("bootstrap", "router.bittorrent.com:6881", "DHT bootstrap node")
flag.Parse()
conn, err := net.ListenUDP("udp", &net.UDPAddr{Port: *udpPort})
if err != nil {
log.Fatal(err)
}
dhtCh := make(chan utp.Packet, 64)
sock := utp.New(conn, dhtCh)
dht := dht.New(conn, dhtCh)
sock.Start()
if err := dht.Bootstrap(context.Background(), *bootstrap); err != nil {
log.Fatal(err)
}
m, err := client.NewManager(*dir, dht, *btPort, sock)
if err != nil {
log.Fatal(err)
}
go m.Run()
if err := go9p.Serve(*addr, fs.New(m).Server()); err != nil {
log.Fatal(err)
}
}