go网络通信

package main

import (
	"fmt"
	"net"
	"os"
	"unsafe"
)

func StringToBytes(s string) []byte {
	return *(*[]byte)(unsafe.Pointer(
		&struct {
			string
			Cap int
		}{s, len(s)},
	))
}

func readHandler(c net.Conn) {
	for {
		var bufs []byte = make([]byte, 1024)
		n, _ := c.Read(bufs)
		fmt.Println(n, string(bufs[:n]))
		//line, _, _ := bufio.NewReader(c).ReadLine()
		c.Write(bufs[:n])
	}
}
func main() {
	l, err := net.Listen("tcp", "0.0.0.0:9001")
	if err != nil {
		os.Exit(1)
	}
	defer l.Close()

	for {
		c, err := l.Accept()
		if err != nil {
			os.Exit(1)
		}
		go readHandler(c)
	}
}
package main

import (
	"fmt"
	"net"
	"os"
	"unsafe"
)

func BytesToString(b []byte) string {
	return *(*string)(unsafe.Pointer(&b))
}
func receive(c net.Conn) {

	var b []byte = make([]byte, 1024)
	for {

		n, _ := c.Read(b)
		if n > 0 {
			fmt.Println("接收的消息数 ", n, string(b[:n]))
		}
	}
}
func main() {
	conn, err := net.Dial("tcp", "127.0.0.1:9001")
	if err != nil {
		os.Exit(1)
	}
	defer conn.Close()
	go receive(conn)
	for {
		var msg []byte
		fmt.Println("请输入消息")
		fmt.Scanln(&msg)
		conn.Write(msg)
		//conn.Read(msg)
		//fmt.Println(string(msg))
		//line, prefix, err := bufio.NewReader(conn).ReadLine()
		//fmt.Println(BytesToString(msg))
	}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值