go语言网络编程之tcp
bojie5744 · · 13401 次点击 · · 开始浏览go语言网络编程之tcp
go语言网络编程需要导入包 net如下
import(
"fmt"
"net"
)
重要函数
funcListen(net,laddrstring)(Listener,error)
func Accept()(cConn,errerror)
func Read(b[]byte)(nint,errerror)
好,我们先写一个go服务器端。
编程之前,先来了解下go语法,熟悉的跳过此段。
go的变量声明比较怪,和c的声明"相反"
c语言的声明是这样的 int a;
go语言的声明是这样的 var a int; 如果无视var这个标志,你会就是"相反"。
而且你声明不使用会报错,在go中。
go语言的多变量赋值, i:=1 等价于刚才说明的 var i int = 1,下面的i,j赋值会自动匹配 i=1,j=1
i,j:=1,1
i=i+j
恩,这个多变量赋值的这个东西,在函数返回值有多变量的用上。对,go语言函数可以返回多个值⊙_⊙
和lua语言相似。
go语言的函数实现如下所示,函数形参的声明不用带上var
func test(r string,
err string){
return r err
}
i,j:=test("1","2");
go语言的for和if
if和for 一样,可以在条件之前执行一个简单的语句,用分号相隔,由这个语句定义的变量的作用域仅在 if 范围之内。
如下所示
if y:=5;y==5 {//如果y=5则输出y
fmt.Println(y)
}
go语言defer的使用,代码例子如下
下面大家可以看看超级简单的tcp服务器端的代码
package main
import (
"net"
"fmt"
)
func main() {
server,err:=net.Listen("tcp",":7777")
iferr==nil{//若果err为nil,则成功创建
for{
con,error_:=server.Accept()
fmt.Println("有一个客户连接\n")
iferror_==nil{
con.Write([]byte("helloworld!"))
}
}
}else{
return
}
}
下面则是客户端的代码
conn,err:=net.Dial("tcp","127.0.0.1:7777")
iferr==nil{
for{
buf:=make([]byte,1024)
iflength,err:=conn.Read(buf);err==nil{
iflength>0{
buf[length]=0
fmt.Printf("%s",string(buf[0:length]))
}
}
}
}else{
return
}
整合在一起就是以下代码
ifos.Args[1]=="server"{
server,err:=net.Listen("tcp",":7777")
iferr==nil{//若果err为nil,则成功创建
for{
con,error_:=server.Accept()
fmt.Println("有一个客户连接\n")
iferror_==nil{
con.Write([]byte("helloworld!"))
}
}
}else{
return
}
}else{
conn,err:=net.Dial("tcp","127.0.0.1:7777")
iferr==nil{
for{
buf:=make([]byte,1024)
iflength,err:=conn.Read(buf);err==nil{
iflength>0{
buf[length]=0
fmt.Printf("%s",string(buf[0:length]))
}
}
}
}else{
return
}
}
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传
收入到我管理的专栏 新建专栏
go语言网络编程之tcp
go语言网络编程需要导入包 net如下
import(
"fmt"
"net"
)
重要函数
funcListen(net,laddrstring)(Listener,error)
func Accept()(cConn,errerror)
func Read(b[]byte)(nint,errerror)
好,我们先写一个go服务器端。
编程之前,先来了解下go语法,熟悉的跳过此段。
go的变量声明比较怪,和c的声明"相反"
c语言的声明是这样的 int a;
go语言的声明是这样的 var a int; 如果无视var这个标志,你会就是"相反"。
而且你声明不使用会报错,在go中。
go语言的多变量赋值, i:=1 等价于刚才说明的 var i int = 1,下面的i,j赋值会自动匹配 i=1,j=1
i,j:=1,1
i=i+j
恩,这个多变量赋值的这个东西,在函数返回值有多变量的用上。对,go语言函数可以返回多个值⊙_⊙
和lua语言相似。
go语言的函数实现如下所示,函数形参的声明不用带上var
func test(r string,
err string){
return r err
}
i,j:=test("1","2");
go语言的for和if
if和for 一样,可以在条件之前执行一个简单的语句,用分号相隔,由这个语句定义的变量的作用域仅在 if 范围之内。
如下所示
if y:=5;y==5 {//如果y=5则输出y
fmt.Println(y)
}
go语言defer的使用,代码例子如下
下面大家可以看看超级简单的tcp服务器端的代码
package main
import (
"net"
"fmt"
)
func main() {
server,err:=net.Listen("tcp",":7777")
iferr==nil{//若果err为nil,则成功创建
for{
con,error_:=server.Accept()
fmt.Println("有一个客户连接\n")
iferror_==nil{
con.Write([]byte("helloworld!"))
}
}
}else{
return
}
}
下面则是客户端的代码
conn,err:=net.Dial("tcp","127.0.0.1:7777")
iferr==nil{
for{
buf:=make([]byte,1024)
iflength,err:=conn.Read(buf);err==nil{
iflength>0{
buf[length]=0
fmt.Printf("%s",string(buf[0:length]))
}
}
}
}else{
return
}
整合在一起就是以下代码
ifos.Args[1]=="server"{
server,err:=net.Listen("tcp",":7777")
iferr==nil{//若果err为nil,则成功创建
for{
con,error_:=server.Accept()
fmt.Println("有一个客户连接\n")
iferror_==nil{
con.Write([]byte("helloworld!"))
}
}
}else{
return
}
}else{
conn,err:=net.Dial("tcp","127.0.0.1:7777")
iferr==nil{
for{
buf:=make([]byte,1024)
iflength,err:=conn.Read(buf);err==nil{
iflength>0{
buf[length]=0
fmt.Printf("%s",string(buf[0:length]))
}
}
}
}else{
return
}
}