gpt4 book ai didi

sockets - Go语言如何创建客户端?

转载 作者:IT王子 更新时间:2023-10-29 00:39:55 26 4
gpt4 key购买 nike

我是新来的,我试图用 go 语言准备客户端服务器并尝试编写代码,但它没有给出任何输出。它不会给出任何错误,只是在倾听。

请有人帮助我,我想使用 go 创建身份验证系统,其中服务器使用用户名密码对客户端进行身份验证..

服务器:

package main

import (
"fmt"
"net"
)

func main() {
service := "0.0.0.0:8080"
tcpAddr, err := net.ResolveTCPAddr("tcp", service)
checkError(err)
listener, err := net.ListenTCP("tcp", tcpAddr)
checkError(err)
for {
conn, err := listener.Accept()
//fmt.Println("Server listerning")
_, err = conn.Read([]byte("HEAD"))
if err != nil {
conn.Close()
}
if err != nil {
continue
}
}
}

func checkError(err error) {
if err != nil {
fmt.Println("Fatal error ", err.Error())
}
}

客户端:

package main

import (
"bufio"
"fmt"
"net"
"os"
"strings"
)

func main() {
if len(os.Args) != 2 {
fmt.Println("Usage: ", os.Args[0], "host")
os.Exit(1)
}
host := os.Args[1]
conn, err := net.Dial("tcp", host+":8080")
checkError(err)
_, err = conn.Write([]byte("HEAD"))
reader := bufio.NewReader(os.Stdin)
for {
line, err := reader.ReadString('\n')
ftm.Println(err)
line = strings.TrimRight(line, " \t\r\n")
if err != nil {
conn.Close()
break

}
}
}
func checkError(err error) {
if err != nil {
fmt.Println("Fatal error ", err.Error())
}
}

最佳答案

我不确定您是否需要解析您的地址才能收听。

你应该能够做到这一点:

listener, err := net.Listen("tcp", ":8080")

而且您似乎没有对接收到的字节服务器端做任何事情(您丢弃了 Read 的结果),这解释了为什么您认为您没有收到任何东西。

请注意,您的代码一次只能处理一个连接。您应该在新的 goroutine 中处理每个打开的连接。

这是一个 example of client-server communication over TCP在相关问题中。

关于sockets - Go语言如何创建客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13644646/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com