当前位置: 首页 > article >正文

Go的客户端与服务器通信案例

客户端代码

package main
import (
	"fmt"
	"net"
	"os"
	"bufio"
)

func main(){
	fmt.Println("客户端启动……")
	conn,err:=net.Dial("tcp","127.0.0.1:8888")
	if err!=nil{
		fmt.Println("客户端连接服务器失败,错误信息:",err)
		return
	}
	fmt.Println("客户端连接服务器成功,连接信息:",conn)

	// 客户端发送信息
	reader := bufio.NewReader(os.Stdin)
	for{
		str,err := reader.ReadString('\n')
		if err != nil {
			fmt.Println("客户端发送信息失败,错误信息:",err)
			return
		}
		n,err := conn.Write([]byte(str))
		if err != nil {
			fmt.Println("客户端发送信息失败,错误信息:",err)
			return
		}
		fmt.Println("客户端发送信息成功,发送的字节数:",n)
	}

	

}

服务器代码

package main
import (
	"fmt"
	"net"
	
)
func process(conn net.Conn){
	defer conn.Close()
	for{
		buf:=make([]byte,1024)
		n,err:=conn.Read(buf)
		if err!=nil{
			fmt.Println("客户端断开连接,错误信息:",err)
			return
		}
		fmt.Println("服务器收到信息:",string(buf[:n]))
		
	}
}
func main(){
	fmt.Println("服务器启动……")
	lisnet,err:=net.Listen("tcp","127.0.0.1:8888")
	if err!=nil{
		fmt.Println("服务器监听失败,错误信息:",err)
		return
	}
	fmt.Println("服务器监听成功,监听信息:",lisnet)
	for{
		conn,err:=lisnet.Accept()
		if err!=nil{
			fmt.Println("服务器接收客户端连接失败,错误信息:",err)
			continue
		}
		fmt.Printf("服务器接收客户端连接成功,连接信息:%v,接收到的客户端信息:%v\n",conn,conn.RemoteAddr().String())

		// 接受信息
		go process(conn)
	}
	
	

}

客户端运行效果

客户端启动……
客户端连接服务器成功,连接信息: &{{0xc00009e288}}

我看新闻说有人在饮水机里下毒
客户端发送信息成功,发送的字节数: 44
毒死了成绩好的学生
客户端发送信息成功,发送的字节数: 29
妈你放心,我成绩差,没事的
客户端发送信息成功,发送的字节数: 41
我是在警醒你千万别给同学下毒
客户端发送信息成功,发送的字节数: 44
[][][]
客户端发送信息成功,发送的字节数: 17

服务器运行效果

服务器启动……
服务器监听成功,监听信息: &{0xc000072288 {<nil> 0 {false 0 0 0} 0}}
服务器接收客户端连接成功,连接信息:&{{0xc000072508}},接收到的客户端信息:127.0.0.1:59990


服务器收到信息: 我看新闻说有人在饮水机里下毒

服务器收到信息: 毒死了成绩好的学生

服务器收到信息: 妈你放心,我成绩差,没事的

服务器收到信息: 我是在警醒你千万别给同学下毒

服务器收到信息: [][][]


http://www.kler.cn/news/363183.html

相关文章:

  • 百度搜索推广和信息流推广的区别,分别适用于什么场景!
  • 技术总结(十一)
  • word下宏命令添加右键菜单调用大语言模型
  • 力扣71~75题
  • 【跨平台】ReactNative 入门初探
  • 大数据治理:构建新时代数据生态的关键
  • 基于PHP+MySQL+Vue的网上订餐系统
  • jmeter是怎么用的,怎么设计接口测试用例的
  • SEO基础:什么是LSI关键词?【百度SEO优化专家】
  • elementUI提示、通知、弹框每次只出现一个
  • Flutter仿京东商城APP底部导航实现
  • 代码随想录训练营Day06 | 454.四数相加II - 383. 赎金信 - 15. 三数之和 - 18. 四数之和
  • 毕业设计选题:基于django+vue的个人博客系统设计与开发
  • Github 2024-10-17 Go开源项目日报 Top10
  • 华为Eth-Trunk级联堆叠接入IPTV网络部署案例
  • 网络安全:数字世界的护卫
  • 访问kerberos认证华为的kafka集群
  • 【Python爬虫实战】使用BeautifulSoup和Scrapy抓取网页数据!
  • 大模型进阶微调篇(二):基于人类反馈的强化学习RLHF原理、优点介绍,但需要警惕LLMs的拍马屁行为
  • 2000-2023年上市公司绿色专利申请授权面板数据
  • 最近本地vmware workstation虚拟机用了一段时间后就出现网络很慢,登录不了的现象
  • 教育技术的未来:Spring Boot在线教学平台
  • SwitchHosts快速修改host文件
  • 数据资产入表:政策与实践全面解读
  • lego-loam featureAssociation 源码注释(二)
  • 嵌入式-ftrace