Golang 端口转发工具初学gogo语言io.copy , 写一个端口转发工具 。很方便go语言io.copy的小工具go语言io.copy,希望能对大家学习go语言有所帮助 。
```Golang
package main
import(
"fmt"
"io"
"net"
"sync"
)
varlocksync.Mutex
vartrueList[]string
varipstring
varliststring
funcmain(){
ip="0.0.0.0:888"
server()
}
funcserver(){
fmt.Printf("Listening%s",ip)
lis,err:=net.Listen("tcp",ip)
iferr!=nil{
fmt.Println(err)
return
}
deferlis.Close()
for{
conn,err:=lis.Accept()
iferr!=nil{
fmt.Println("建立连接错误:%v\n",err)
continue
}
fmt.Println(conn.RemoteAddr(),conn.LocalAddr())
gohandle(conn)
}
}
funchandle(sconnnet.Conn){
defersconn.Close()
ip:="127.0.0.1:8888"
dconn,err:=net.Dial("tcp",ip)
iferr!=nil{
fmt.Printf("连接%v失败:%v\n",ip,err)
return
}
ExitChan:=make(chanbool,1)
gofunc(sconnnet.Conn,dconnnet.Conn,Exitchanbool){
io.Copy(dconn,sconn)
ExitChan-true
}(sconn,dconn,ExitChan)
gofunc(sconnnet.Conn,dconnnet.Conn,Exitchanbool){
io.Copy(sconn,dconn)
ExitChan-true
}(sconn,dconn,ExitChan)
-ExitChan
dconn.Close()
}
【golang】小技巧-利用io.copy写数据进文件io.copy是按默认的缓冲区32k循环操作的,不会将内容一次性全写入内存中,这样就能解决大文件的问题 。
golang io readline readallimport "bufio"
reader:=bufio.NewReader(conn)
reader.ReadLine()
//import "io"
io.Copy(dst , src)
//import "io/ioutil"
【go语言io.copy go语言教程】 ioutil.ReadAll(Conn)
File.Read(buf)
con.Write(buf)
go语言io.copy的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于go语言教程、go语言io.copy的信息别忘了在本站进行查找喔 。
推荐阅读
- 虚拟主机如何使用网络,虚拟主机的三种方式
- 什么软件下载唱歌视频好,对口型唱歌软件下载
- ppt内如何让字体对齐,ppt如何设置字体对齐
- j进入虚拟机出现蓝屏,打开虚拟机蓝屏
- 表单数据提交不到php 提交表单数据有哪几种方法,php如何获取表单提交的数据
- nova7是鸿蒙os吗,nova7支持鸿蒙系统吗
- 店铺位置差人流少如何引流,一个店铺位置不好,如何引流
- excel柱状图怎么重叠,excel柱状图怎么叠加
- 怎么让php输出最新数据 php的输出方式有哪些