【发布时间】:2018-10-04 04:04:20
【问题描述】:
我是 Go 新手,我正在尝试创建一个服务器,该服务器可以接收来自客户端的消息并将其发送到其他客户端或任何其他特定客户端。我尝试了很多聊天示例,但我想做的是创建两个文件,一个用于服务器,另一个用于客户端。这是我目前尝试的代码。
server.go
package main
import "net"
import "fmt"
import "bufio"
import "strings"
func send(c net.Conn){
netData, err := bufio.NewReader(c).ReadString('\n')
if err != nil {
fmt.Println(err)
return
}
temp := strings.TrimSpace(string(netData))
fmt.Printf(temp)
}
func main() {
fmt.Println("Launching server...")
// listen on all interfaces
ln, _ := net.Listen("tcp", ":8081")
for {
// Listen for an incoming connection.
conn, err := ln.Accept()
if err != nil {
fmt.Println("Error accepting: ", err.Error())
continue
}
go send(conn)
}
client.go
package main
import "net"
import "fmt"
import "bufio"
import "os"
func recieve(conn net.Conn){
message, _ := bufio.NewReader(conn).ReadString('\n')
fmt.Println(message)
}
func send(conn net.Conn){
reader := bufio.NewReader(os.Stdin)
text, _ := reader.ReadString('\n')
fmt.Fprintf(conn, text)
}
func main(){
// connect to this socket
conn, err := net.Dial("tcp", "127.0.0.1:8081")
if err != nil {
fmt.Println("Error accepting: ", err.Error())
}
for {
go recieve(conn)
go send(conn)
}
conn.Close()
}
当我尝试运行时,我的计算机崩溃了。我知道我在处理发送和接收的消息时犯了一些错误,但无法弄清楚。我将不胜感激任何帮助。谢谢。
【问题讨论】:
-
它是如何崩溃的,这两个程序的输出是什么?
-
第一次接受多个客户端的输入。之后,它没有任何输入,几秒钟后,整个计算机崩溃了。我从任务管理器中检查了它正在高度使用处理器。