go内置库函数实现client与server数据的发送接收

这篇具有很好参考价值的文章主要介绍了go内置库函数实现client与server数据的发送接收。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

功能:客户端持续写入数据,直到输入exit退出,服务端读取数据并打印
注意:server和client目录在同一层级

服务端

server/main

package main

import (
	"fmt"
	"net"
)

func main() {
	listen, err := net.Listen("tcp", "0.0.0.0:8080")
	if err != nil {
		fmt.Printf("err: %v\n", err)
		return
	}
	fmt.Println("server is listening")
	defer listen.Close()
	for {
		conn, err2 := listen.Accept()
		if err2 != nil {
			fmt.Printf("err2: %v\n", err2)
			return
		}
		fmt.Printf("server: %v\n", conn.LocalAddr())
		go readData(conn)
	}
}

func readData(conn net.Conn) {
	defer conn.Close()
	buf := make([]byte, 1024)
	for {
		n, err := conn.Read(buf)
		if err != nil {
			fmt.Printf("err: %v\n", err)
			return
		}
		fmt.Println("读取了", n, "字节数据")
		fmt.Println("buf:", string(buf[:n]))
	}
}

客户端

client/main
go开启协程,数据写入结束向管道输入信号,主线程获取信号,退出。否则主线程运行结束会直接退出文章来源地址https://www.toymoban.com/news/detail-827857.html

package main

import (
	"bufio"
	"fmt"
	"net"
	"os"
	"strings"
)

var exitchan chan bool

func main() {
	fmt.Println("client is wating to connect")
	conn, err := net.Dial("tcp", "192.168.0.1:8080")
	if err != nil {
		fmt.Printf("err: %v\n", err)
		return
	}
	go writeData(conn)
	if <-exitchan {
		fmt.Print("client exit")
	}
}

func writeData(conn net.Conn) {
	defer conn.Close()
	reader := bufio.NewReader(os.Stdin)
	len := 0
	for {
		line, err := reader.ReadString('\n')
		if err != nil {
			return
		}
		line = strings.Trim(line, "\r\n")
		len, err = conn.Write([]byte(line))
		if err != nil {
			return
		}
		if line == "exit" {
			break
		}
		fmt.Println("写入", len, "字节数据")
	}
	fmt.Println("client:", conn.RemoteAddr())
	exitchan <- true
}

到了这里,关于go内置库函数实现client与server数据的发送接收的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • STM32实现三个串口同时开启发送接收数据

            实现STM32开通三个串口,每个串口都可以实现接收和发送数据。          编程时,严禁在中断函数中写入发送串口数据代码,否则会出错,具体原因不清楚(有大佬知道的话帮我指出),可能原因是DR寄存器冲突导致。         RX,TX连接到A9,A10使用串口1,使

    2024年04月13日
    浏览(72)
  • 鸿蒙前后端互联实现接收发送数据+MySQL数据库(简单示例)

    Visual Studio Code mySQL+DBeaver(已连接,具体连接可参考http://t.csdnimg.cn/7U7Oj)另外不用可视化工具DBeaver,可下载vscode插件mysql连接MySQL DevEco Studio 安装(终端运行安装) 直接看代码(python后端代码) 使用flask创建了一个应用实例,包含两个路由,一个用于发送到前端,一个用于接

    2024年04月15日
    浏览(38)
  • QT三驾马车(一)——实现上位机(串口数据发送和接收)

    以后同学们做项目一定会用到QT的三驾马车,QT的三驾马车即QT的串口编程,QT的网络编程和QT的GPIO,今天我们通过一个项目来介绍第一部分,QT的串口编程。 之前看过很多相关的文章,但是按照顺序来编译总是会出错,可是我自己还找不到原因,对于我这种新手小白来说极其

    2024年02月15日
    浏览(44)
  • 【PHP】PHP实现与硬件串口交互,接收硬件发送的实时数据

    目的:借助虚拟串口软件(VSPD)模拟硬件串口发送数据,使用PHP语言实现接收硬件发送的数据。 我这里的需求是连接天平,把天平的称量数据实时的传送到PHP使用。 使用工具:vspd+串口调试工具 使用语言:PHP 使用到的工具有VSPD和串口调试工具,其中VSPD是模拟硬件串口,串

    2024年02月02日
    浏览(34)
  • 使用ArduinoMqttClient库连接阿里云,并实现发送接收数据(ESP8266)

    阿里云物联网平台的接入方式有很多种,从阿里云提供的开发文档可以看到,支持的接入协议有MQTT、HTTPS、CoAP、JT/808、GB/32960协议等等,并支持多种类型的设备接入。 对于阿里云物联网平台的接入,网上有许许多多的教程,有亲测有效的,表示感谢;也些教程留了有一些bu

    2024年02月02日
    浏览(32)
  • go 内置函数copy()

    当我们在Go语言中需要将一个切片的内容复制到另一个切片时,可以使用内置的 copy() 函数。 copy() 函数用于将源切片中的元素复制到目标切片中,它有以下形式的签名: 其中, dst 是目标切片, src 是源切片, T 是切片元素的类型。函数返回一个整数值,表示实际复制的元素

    2024年02月14日
    浏览(42)
  • Go语言内置类型和函数

    1.1.1 值类型 1.1.2 引用类型:(指针类型) Go 语言拥有一些不需要进行导入操作就可以使用的内置函数。它们有时可以针对不同的类型进行操作,例如:len、cap 和 append,或必须用于系统级的操作,例如:panic。因此,它们需要直接获得编译器的支持。

    2024年02月08日
    浏览(54)
  • esp8266模块--MQTT协议连接服务器实现数据接收和发送+源码

    首先推荐中国移动的代码,我觉得中国移动的代码更为合理:(但是有一些其他的模块在里面) OneNET开发板代码、资料--2020-09-27--标准板、Mini板bug修复 - 开发板专区 - OneNET设备云论坛 (10086.cn) 以及这位b站up做的视频:(wifi模块在p9节) 【挽救小白第一季】STM32+8266+小程序智能

    2024年02月08日
    浏览(58)
  • uni-app实现跨端开发手机蓝牙接收和发送数据

    最近接触uni-app夸终端开发手机蓝牙模块的接收和发送数据功能, 手机蓝牙模块接发收数据主要流程步骤如下: 1、初始化手机蓝牙 2、根据设备id获取蓝牙服务, 3、根据蓝牙服务获取对应的蓝牙特征值 4、监听蓝牙特征值数值变化,发送对应数据到蓝牙特征值 具体

    2024年02月12日
    浏览(44)
  • STM32407 FreeRtos系统下lwip实现发送和接收数据包进行链路测试

    下面是一个基于STM32F407 FreeRTOS系统下lwIP实现发送和接收数据包进行链路测试的案例。 硬件配置和软件环境搭建 首先,需要准备好STM32F407开发板、以太网网线和一台电脑,然后在电脑上安装好STM32CubeMX工具和Keil MDK软件,创建一个新的工程,并按照以下步骤进行配置: 1)选择

    2024年02月12日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包