加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang tcp socket

发布时间:2020-12-16 18:48:31 所属栏目:大数据 来源:网络整理
导读:golang tcp socket编程和http差不多的感觉,也是请求应答的方式,TCP请求需要(ip地址,协议,端口)这三项,跟http请求差不多,我们现在来模拟一个请求和应答来,请求的一方我们就叫做client.go package mainimport ("fmt""io/ioutil""net""os")func main()

golang tcp socket编程和http差不多的感觉,也是请求应答的方式,TCP请求需要(ip地址,协议,端口)这三项,跟http请求差不多,我们现在来模拟一个请求和应答来,请求的一方我们就叫做client.go

package main

import (
	"fmt"
	"io/ioutil"
	"net"
	"os"
)

func main() {
	tcpAddr,err := net.ResolveTCPAddr("tcp4","127.0.0.1:7777") //获取一个TCP地址信息,TCPAddr
	checkError(err)
	conn,err := net.DialTCP("tcp",nil,tcpAddr) //创建一个TCP连接:TCPConn
	checkError(err)
	_,err = conn.Write([]byte("HEAD / HTTP/1.0rnrn")) //发送HTTP请求头
	checkError(err)
	result,err := ioutil.ReadAll(conn) //获得返回数据
	checkError(err)
	fmt.Println(string(result))
	os.Exit(1)
}

func checkError(err error) {
	if err != nil {
		fmt.Fprintf(os.Stderr,"Fatal error: %s",err.Error())
		os.Exit(1)
	}
}



应答的一方我们叫做server.go

import (
	"fmt"
	"net"
	"os"
	"time"
)

func main() {
	tcpAddr,":7777") //获取一个tcpAddr
	checkError(err)
	listener,err := net.ListenTCP("tcp",tcpAddr) //监听一个端口
	checkError(err)
	for {
		conn,err := listener.Accept()
		if err != nil {
			continue
		}
		daytime := time.Now().String()
		conn.Write([]byte(daytime))
		conn.Close()
	}
}

func checkError(err error) {
	if err != nil {
		fmt.Fprintf(os.Stderr,err.Error())
		os.Exit(1)
	}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读