1 Star 0 Fork 216

bear256 / chuantou

forked from 骁龙 / chuantou 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
server.go 885 Bytes
一键复制 编辑 原始数据 按行查看 历史
骁龙 提交于 2017-03-17 15:42 . 多协程版本
package main
import (
"fmt"
"net"
"os"
"runtime"
)
type Channel struct {
from, to net.Conn
}
func pass_through(c *Channel) {
b := make([]byte, 10240)
for {
n, err := c.from.Read(b)
if err != nil {
break
}
if n > 0 {
c.to.Write(b[:n])
}
}
c.from.Close()
c.to.Close()
}
func main() {
runtime.GOMAXPROCS(runtime.NumCPU())
c, err := net.Listen("tcp", ":2000")
if err != nil {
fmt.Printf("Unable to start listener, %v\n", err)
os.Exit(1)
}
u, err := net.Listen("tcp", ":3000")
if err != nil {
fmt.Printf("Unable to start listener, %v\n", err)
os.Exit(1)
}
for {
client, err := c.Accept()
if err != nil {
fmt.Printf("client conn failed, %v\n", err)
}
user, err := u.Accept()
if err != nil {
fmt.Printf("user conn failed, %v\n", err)
}
go pass_through(&Channel{user, client})
go pass_through(&Channel{client, user})
}
}
Go
1
https://gitee.com/bear256/chuantou.git
git@gitee.com:bear256/chuantou.git
bear256
chuantou
chuantou
master

搜索帮助