• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

gosocket、http网络编程demo

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

1、socket通信

  服务端接收数据

  

package main

import (
	"fmt"
	"net"
	"strings"
)

func main() {
	//创建监听
	ip := "127.0.0.1"
	port := 8848
	address := fmt.Sprintf("%s:%d",ip,port)
	listen, err := net.Listen("tcp", address)
	if err != nil {
		fmt.Println(err)
		return
	}
	//一直轮询监听
	for {
		fmt.Println("监听中...")
		//接收数据
		conn, err := listen.Accept()
		if err != nil {
			fmt.Println("accept",err)
			return
		}
		fmt.Println("连接成功")
		//启动多个处理回调
		go handle(conn)
	}
}

func handle(conn net.Conn)  {
	for{
		//创建一个容器,用于接受读取到的数据
		buf := make([]byte,1024)
		//cnt真正读取客户端发来的数据长度
		fmt.Println("准备读取发送过来的数据")
		cnt, err := conn.Read(buf)
		if err != nil {
			fmt.Println("cnt err",err)
			return
		}
		//只输出收到的长度
		fmt.Println("长度:",cnt,"---数据:",string(buf[:cnt]))
		//将数据转成大写
		upperData := strings.ToUpper(string(buf[:cnt]))
		write, err := conn.Write([]byte(upperData))
		if err != nil {
			fmt.Println("write err",err)
			return
		}
		fmt.Println("长度:",write,"---数据:",upperData)
	}
	//关闭
	conn.Close()
}

  socket客户端请求

  

func main() {
	dial, err := net.Dial("tcp", ":8848")
	if err != nil {
		panic(err)
	}
	fmt.Println("connect success")
	//不断重复发送多次
	for {
		//发送数据
		sendData := []byte("hello world")
		write, err := dial.Write(sendData)
		if err != nil {
			panic(err)
		}
		fmt.Println("send :",write,"--sendData:",string(sendData))

		//接收服务器返回
		buf := make([]byte,1024)
		read, err := dial.Read(buf)
		if err != nil {
			panic(err)
		}
		time.Sleep(time.Second)
		fmt.Println("client receive,",read,"--receive data:",string(buf[:read]))
	}
	defer dial.Close()
}

 

 

2、http服务请求

  服务端

func main() {
	//注册路由
	http.HandleFunc("/user", func(writer http.ResponseWriter, request *http.Request) {
		//write 将数据返回给客户端
		//request 请求数据
		fmt.Println("method:",request.Method,request)
		io.WriteString(writer,"这是返回的数据")
	})
	if err := http.ListenAndServe("127.0.0.1:8080",nil); err != nil {
		panic(err)
	}
}

  客户端请求

func main() {
	//http包
	client := http.Client{}
	rsp, err := client.Get("http://127.0.0.1:8080")
	if err != nil {
		panic(err)
	}
	fmt.Println(rsp,rsp.Body,rsp.Header.Get("Content-Type"))
}

  

  


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
go区块链学习教程之iris框架mvc架构发布时间:2022-07-10
下一篇:
grpc流模式-go实现发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap