墨白学编程 2021-08-11 21:34 采纳率: 0%
浏览 238
已结题

go语言如何实现如图向tcp发送16进制请求数据?

img

如何实现从终端向tcp发送16进制,然后得到服务端的回复,给出代码,请吃饭

  • 写回答

2条回答 默认 最新

  • 墨白学编程 2021-08-12 11:50
    关注

    package main

    import (
        "bufio"
        "encoding/hex"

        "fmt"
        "net"
        "os"
        "strings"
        //"log"
        //"decode"
        //"strconv"
        //"math"
        //"crypto/md5"
    )

    //public static byte[] HexStringToByteArray(string s) {
    //s=s.Replace(" ","")
    //s:=s.Trim()
    ////byte[] buffer:=new byte[s.Length/2]
    //for i := 0; i < s.Length; i+=2 {
    //buffer[i/2]=(byte)Convert.ToByte(s.Substring(i,2),16)
    //return buffer
    //}
    func main() {
        //主动连接服务器
        conn, err := net.Dial("tcp", "192.168.1.154:502")
        if err != nil {
            fmt.Println("client dial err=", err)
            return
        }
        defer conn.Close()
        reader := bufio.NewReader(os.Stdin)
        for {
            //从终端读取一行用户输入,并准备发送给服务器
            line, err := reader.ReadString('\n') //返回的字符串
            if err != nil {
                fmt.Println("readString err=", err)
            }

            //如果用户输入exit就退出
            line = strings.Trim(line, " \r\n")
            if line == "exit" {
                fmt.Println("客户端退出")
                break
            }
            //将16进制字符串转化为16进制字节数组
            //byte[] buff:= byte[len(line)/2]

            //for i := 0; i < len(line); i+=2 {
            //  buffer[i/2]=(byte)Convert.ToByte(line.Substring(i,2),16)
               / return buff
        //  }
            
        
            //hex_data, _ := hex.DecodeString(line) string(hex_data)

            //将line发送给服务器
            _, err = conn.Write([]byte(string(hex_data) + "\n1")) //字符串转化为切片发送
            if err != nil {
                fmt.Println("conn.Write err=", err)

            }
        }

        //接收服务器回复的数据
        buf := make([]byte, 2048)
        for {
            n, err2 := conn.Read(buf)
            if err2 != nil {
                fmt.Println("服务器read err=", err2)
                return
            }
            fmt.Print(string(buf[:n]))
        }

    }

    评论

报告相同问题?

问题事件

  • 系统已结题 8月19日
  • 修改了问题 8月11日
  • 修改了问题 8月11日
  • 修改了问题 8月11日
  • 展开全部

悬赏问题

  • ¥15 react-diff-viewer组件,如何解决数据量过大卡顿问题
  • ¥20 遥感植被物候指数空间分布图制作
  • ¥15 安装了xlrd库但是import不了…
  • ¥20 Github上传代码没有contribution和activity记录
  • ¥20 SNETCracker
  • ¥15 数学建模大赛交通流量控制
  • ¥15 为什么我安装了open3d但是在调用的时候没有报错但是什么都没有发生呢
  • ¥50 paddleocr最下面一行似乎无法识别
  • ¥15 求某类社交网络数据集
  • ¥15 靶向捕获探针方法/参考文献