golang和python通信_Go语言基于Socket编写服务器端与客户端通信的实例

本文介绍了如何使用Go语言编写一个基于Socket的TCP服务器,以及如何用Python作为客户端与其进行通信。Go语言的服务器端通过`net.Listen`、`net.Accept`和`conn.Read`实现连接和数据读取。客户端使用`net.DialTCP`进行连接。此外,文章还展示了如何设计一个简单的通讯协议,以确保数据的完整性和正确性。
摘要由CSDN通过智能技术生成

在golang中,网络协议已经被封装的非常完好了,想要写一个Socket的Server,我们并不用像其他语言那样需要为socket、bind、listen、receive等一系列操作头疼,只要使用Golang中自带的net包即可很方便的完成连接等操作~

在这里,给出一个最最基础的基于Socket的Server的写法:

package main

import (

"fmt"

"net"

"log"

"os"

)

func main() {

//建立socket,监听端口

netListen, err := net.Listen("tcp", "localhost:1024")

CheckError(err)

defer netListen.Close()

Log("Waiting for clients")

for {

conn, err := netListen.Accept()

if err != nil {

continue

}

Log(conn.RemoteAddr().String(), " tcp connect success")

handleConnection(conn)

}

}

//处理连接

func handleConnection(conn net.Conn) {

buffer := make([]byte, 2048)

for {

n, err := conn.Read(buffer)

if err != nil {

Log(conn.RemoteAddr().String(), " connection error: ", err)

return

}

Log(conn.RemoteAddr().String(), "receive data string:\n", string(buffer[:n]))

}

}

func Log(v ...interface{}) {

log.Println(v...)

}

func CheckError(err error) {

if err != nil {

fmt.Fprintf(os.Stderr, "Fatal error: %s", err.Error())

os.Exit(1)

}

}

唔,抛除Go语言里面10行代码有5行error的蛋疼之处,你可以看到,Server想要建立并接受一个Socket,其核心流程就是

netListen, err := net.Listen("tcp", "localhost:1024")

conn, err := netListen.Accept()

n, err := conn.Read(buffer)

这三步,通过Listen、Accept 和Read,我们就成功的绑定了一个端口,并能够读取从该端口传来的内容~

Server写好之后,接下来就是Client方面啦,我手写一个HelloWorld给大家:

package main

import (

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值