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

ops/2024/10/22 7:23:43/

客户端代码

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.ppmy.cn/ops/127505.html

相关文章

WEB前端使用标签制作网页

需要使用HTML的一些基本标签制作网页 基本代码如下: <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><form action"#" method"post" enctype"text/…

大数据-178 Elasticsearch Query - Java API 索引操作 文档操作

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

git 免密的方法

方法一&#xff1a; 通过生成credential配置 git config --global credential.helper store 查看.gitconfig文件&#xff0c;发现多了一行 [credential] helper store 方法二&#xff1a; 修改仓库中.git/config文件 url http://账号:密码git.test.com.cn/test/xx.git或者带…

动态规划-子数组系列——413.等差数列划分

1.题目解析 测试用例&#xff1a;413.等差数列划分——力扣 测试用例 2.算法原理 1.状态表示 dp[i]:以第i个位置为结尾的子数组中等差数列的个数 2.状态转移方程 当遇到新的数可以与原来的等差数列构成等差数列说明此时多了一种等差数列的情况则dp[i]dp[i-1]1;反之不能构成等…

抓取指定网站上的所有图片的Python脚本

引言 在当今信息爆炸的时代&#xff0c;互联网上的数据量呈现出指数级的增长。对于开发者、数据分析师以及研究人员而言&#xff0c;从网页中提取有价值的信息是一项至关重要的技能。其中&#xff0c;抓取网站上的图片资源不仅能够丰富我们的数据集&#xff0c;还能为各种应用…

c++面试八股

* 基类、派生类、成员对象构造函数调用顺序 构造时&#xff1a;基类构造函数[a1,a2]→对象成员构造函数[声明顺序 a,b]→派生类本身的构造函数c 析构时&#xff1a;派生类本身的析构函数c→对象成员析构函数[声明反序b,a]→基类析构函数[a2,a1] #include <iostrea…

【AI学习】扩散模型学习总结PPT

#1024程序员节&#xff5c;征文# 看了一些文章&#xff0c;大概学习了扩散模型。 《李宏毅 2023 最新 Diffusion Model 原理讲解》&#xff08;文章链接&#xff1a;https://zhuanlan.zhihu.com/p/692430885&#xff09; 《What are Diffusion Models?》 https://lilianwen…

HTML 区块

HTML 区块 HTML&#xff08;HyperText Markup Language&#xff09;是构建网页的标准语言&#xff0c;它定义了网页的结构和内容。在HTML中&#xff0c;区块元素是指那些通常用于组织页面内容&#xff0c;并以其自身的格式和样式独立存在的元素。这些元素通常用于创建如段落、…