go语言io.copy go语言入门

Golang 端口转发工具

初学go,写一个端口转发工具。很方便的小工具,希望能对大家学习go语言有所帮助。

创新互联是一家以网络技术公司,为中小企业提供网站维护、网站设计制作、做网站、网站备案、服务器租用、申请域名、软件开发、小程序设计等企业互联网相关业务,是一家有着丰富的互联网运营推广经验的科技公司,有着多年的网站建站经验,致力于帮助中小企业在互联网让打出自已的品牌和口碑,让企业在互联网上打开一个面向全国乃至全球的业务窗口:建站联系热线:18980820575

```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 readline readall

import "bufio"

reader:=bufio.NewReader(conn)

reader.ReadLine()

//import "io"

io.Copy(dst , src)

//import "io/ioutil"

ioutil.ReadAll(Conn)

File.Read(buf)

con.Write(buf)

【golang】小技巧-利用io.copy写数据进文件

io.copy是按默认的缓冲区32k循环操作的,不会将内容一次性全写入内存中,这样就能解决大文件的问题。


当前标题:go语言io.copy go语言入门
链接URL:http://scyanting.com/article/doeoigj.html