如何实现从终端向tcp发送16进制,然后得到服务端的回复,给出代码,请吃饭
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]))
}
}
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,目前超出我们的服务范围,暂时无法为您解答。
首次提问人员可免费体验一次有问必答服务。目前首次提问的问题服务范围为:编程语言、Java开发、python、数据库、前端开发 领域专业技术问题,为您提供问题的解决思路和指导。
不提供源码代写、项目文档代写、论文代写、作业题目代写、安装包资源发送或安装、软件使用指导等服务。
我们后续会持续优化,扩大我们的服务范围,为您带来更好地服务。