Go言語 を最近触っていてちょっとした経緯で netchan を使おうと思ったのだが、どうすればいいのかよくわからなくなってきたので取り敢えずメモっておく。このコードは上手くいく。1秒ごとに画面にログが現れる。 package main import ( "log" "time" "netchan" "os/signal" ) func exporter() { exp, _ := netchan.NewExporter("tcp","127.0.0.1:65432") expSendChan := make(chan int) exp.Export("chan", expSendChan, netchan.Send) go func(){ for i:=1;;i++ { time.Sleep(1e9) expSendChan <- i } }() } func importer() { imp, _ := netchan.NewImporter("tcp","127.0.0.1:65432") impRecvChan := make(chan int) imp.Import("chan", impRecvChan, netchan.Recv) go func(){ for { log.Printf("%d", <-impRecvChan) } }() } func main() { exporter() importer() <-signal.Incoming } ただ、これが Importer と Exporter を別のプロセスを分けた時などに起こるような複数回 Importer が接続に行くような状況で上手くデータが転送されないみたいだ。 このソースの main() にある exporter() と importer() の呼び出しのうち片方をコメントアウトし、一方だけを呼ぶ