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