go语言io.copy go语言和python哪个好

Golang 端口转发工具

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

创新互联是一家专注于成都网站设计、成都网站制作与策划设计,临湘网站建设哪家好?创新互联做网站,专注于网站建设10多年,网设计领域的专业建站公司;建站业务涵盖:临湘等地区。临湘做网站价格咨询: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()

}

go语言copy函数介绍的疑惑

go语言我不懂,但是看似乎懂了,仅供参考

意思是源和目标可以为同一目标,复制的数量是源或者目标的元素最小数量

比如例子中的copy(s,a[0]:)

a虽然一共有8个元素,但是s只有6len(det)个元素 ,看上面的makeint是6

所以这里只复制了最小数量6个元素,因此a的012345被复制进了s

第二个

copy(s,s[2]:)

这里是从s[2]开始,所以len是6-2=4,而且因为46,只复制4个元素

因此

0 1 2 3 4 5 复制后4个元素到前面结果就是:

2 3 4 5 4 5 //这个就是可以源和目标可重叠,

上面的也说明了按照len(str)和len(det)中最少值

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语言和python哪个好
URL标题:https://www.cdcxhl.com/article46/hjjhhg.html

成都网站建设公司_创新互联,为您提供网页设计公司品牌网站建设响应式网站手机网站建设网站内链网站导航

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

绵阳服务器托管