套接字服务端怎么利用golang语言实现

  介绍

这期内容当中小编将会给大家带来有关插座服务端怎么利用golang语言实现,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

插座服务器是网络服务中常用的服务器。使用去语言实现这个业务场景是很容易的。

这样的网络通讯,需要一个服务端和至少一个客户端。

我们计划构建一个这样的通讯工程。服务端启动后等待客户端的访问。客户端发送一段信息给服务端。服务端接收到信息后,再回馈给客户端一段信息。

首先要建立服务端。服务端最先要做的事情就是“建立插座端口监听“。

netListen,犯错:=net.Listen (“tcp",“localhost: 1024“)

上面的代码,表名监听的是本机端口1024,而使用的通讯协议是TCP。

当监听结束,模块任务完成后,最后要关闭这个netListen。

推迟netListen.Close ()

使用日志功能,让服务端窗口能看到服务端已经运行了。

日志(“等待客户…“)

之后使用一个为循环,无尽的等待那些不知何时来访问的客户端信息。

循环体内,要监听netListen的信息接收情况:

康涅狄格州,犯错:=netListen.Accept ()

当有来自客户端的访问时,接受访问。并在服务端的日志记录已经有客户端连接成功了。

日志(conn.RemoteAddr () .String (),“TCP连接success")

conn.RemoteAddr () .String()表示的就是远程客户端。

然后,我们开启一个goroutine处理连接任务。

去handleConnection(康涅狄格州)

处理过程就是接收客户端信息和反馈给客户端信息。

n,犯错:=conn.Read(缓冲)

conn.Write([]字节(strTemp))

<强>服务端代码示例

package  main    import  (   “才能net"   “才能fmt"   “才能os"   “才能log"   “才能time"   )   ,   func  main (), {//建才能立插座端口监听   netListen,才能,err :=, net.Listen (“tcp",,“localhost: 1024“)   CheckError才能(err),   defer 才能;netListen.Close (),   日志才能(“Waiting  for  clients …“)   ,//等才能待客户端访问   为{才能   ,,,康涅狄格州,err :=, netListen.Accept(),,,//监听接收   ,,,if  err  !=, nil {   ,,,,,continue ,,,//如果发生错误,继续下一个循环。   ,,,},   ,,,日志(conn.RemoteAddr () .String (),“tcp  connect  success"),//tcp连接成功   ,,,go  handleConnection(康涅狄格州)   ,,}   }   ,//处理连接   func  handleConnection (conn  net.Conn), {   buffer :=,才能使([]字节,2048,),,,,//建立一个片   为{才能   ,,,n, err :=, conn.Read(缓冲),,,//读取客户端传来的内容   ,,,if  err  !=, nil {   ,,,,,日志(conn.RemoteAddr () .String (),“connection 错误:,,,,呃)   ,,,,,return ,,//当远程客户端连接发生错误(断开)后,终止此协程。   ,,,},   ,,,日志(conn.RemoteAddr () .String (),“receive  data 字符串:\ n",,字符串(缓冲区(:n)))   ,   ,,,//返回给客户端的信息   ,,,strTemp :=,“CofoxServer  got  msg  \““+字符串(缓冲[:n]) +“\”, at “+ time.Now () .String ()   ,,,conn.Write([]字节(strTemp))   ,,}   }   ,//日志处理   func 日志(v ……接口{}),{   log.Println才能(v…)   }   ,//错误处理   func  CheckError (err 错误),{   if 才能;err  !=, nil {   ,,,fmt.Fprintf (os.Stderr,“Fatal 错误:,% s",, err.Error ())   ,,}   }

客户端的业务逻辑是,发送信息给服务端,然后接收服务端的反馈。

康涅狄格州,犯错:=net.DialTCP (“tcp", nil, tcpAddr)

用TCP协议拨号(拨号)到服务端。如果没有发生错误,就说明拨通了。于是在客户端日志记录连接成功

fmt.Println(“连接success")

然后在这个已经通畅的连接里,进行发送和接收信息的任务.conn.Write([]字节(字))是发送信息;conn.Read(缓冲)是接收信息。如果接收发生错误,就记录错误:

日志(conn.RemoteAddr () .String(),“等待服务器返回味精错误:“,犯错)

并且中断进程。

如果没有发生错误,酒吧接收到的信息在日志中记录。

套接字服务端怎么利用golang语言实现