Golang中无法调用在Visual Studio创建的TCP服务器怎么办

Golang中无法调用在Visual Studio创建的TCP服务器怎么办

问题:我无法调用在Visual Studio中创建的TCP服务器!

TCP服务器 - 写入连接

我们可以使用标准库中的net包创建自己的TCP服务器。主要有三个步骤:(1) 监听 (2) 接受连接 (3) 对连接进行写入或读取操作。我们将使用telnet来调用我们创建的TCP服务器。Telnet使用传输控制协议(TCP)通过虚拟终端连接提供双向交互式面向文本的通信。

我的操作系统是运行macOS Sierra版本10.12.6的Macbook

我的文本编辑器是Visual Studio Code

我的终端是Mac Terminal 2.7.5

Visual Studio

package main

import (
"fmt"
"io"
"log"
"net"
)

func main() {
li, err := net.Lis
ten("tcp", ":8080")
if err != nil {
log.Fatalln(err)s
}
defer li.Close()

for {
conn, err := li.Accept()
if err != nil {
log.Println(err)
continue
}

io.WriteString(conn, "\nHello from TCP server\n")
fmt.Fprintln(conn, "How is your day?")
fmt.Fprintf(conn, "%v", "Well, I hope!")

conn.Close()
}
}

/Users/reuvenabramson/Documents/goworkspace/src/GoesToEleven/golang-web-dev-master/015_understanding-TCP-servers/01_write

Reuvens-Air:01_write reuvenabramson$ go run main.go
# command-line-arguments
./main.go:11:13: undefined: net.Lis
./main.go:13:2: undefined: ten
Reuvens-Air:01_write reuvenabramson$

我的终端

Reuvens-Air:01_write reuvenabramson$ go run main.go
# command-line-arguments
./main.go:11:13: undefined: net.Lis
./main.go:13:2: undefined: ten
Reuvens-Air:01_write reuvenabramson$ nc localhost 8080
Reuvens-Air:01_write reuvenabramson$ localhost 8080
-bash: localhost: command not found
Reuvens-Air:01_write reuvenabramson$

Chrome浏览器

Localhost: 8080

无法访问此网站

localhost拒绝连接。

ERR_CONNECTION_REFUSED


更多关于Golang中无法调用在Visual Studio创建的TCP服务器怎么办的实战教程也可以访问 https://www.itying.com/category-94-b0.html

3 回复

诺伯特你好!我是鲁文,感谢你的帮助,方法确实有效。

非常感激!!

此致

更多关于Golang中无法调用在Visual Studio创建的TCP服务器怎么办的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


请尝试阅读错误信息并检查您的代码。

net.Listen 对编译器来说都是未知的。请删除它们之间的换行符,使其成为 net.Listen

你的代码中有语法错误,导致编译失败。问题出现在第11行的net.Lis13行的ten,这应该是net.Listen`被错误地换行分割了。

以下是修正后的代码:

package main

import (
	"fmt"
	"io"
	"log"
	"net"
)

func main() {
	li, err := net.Listen("tcp", ":8080")
	if err != nil {
		log.Fatalln(err)
	}
	defer li.Close()

	for {
		conn, err := li.Accept()
		if err != nil {
			log.Println(err)
			continue
		}

		io.WriteString(conn, "\nHello from TCP server\n")
		fmt.Fprintln(conn, "How is your day?")
		fmt.Fprintf(conn, "%v", "Well, I hope!")

		conn.Close()
	}
}

修正后,在终端中运行:

go run main.go

服务器将在8080端口启动。然后使用telnet或nc命令测试连接:

nc localhost 8080

你应该能看到服务器返回的消息:

Hello from TCP server
How is your day?
Well, I hope!

注意:Chrome浏览器无法直接访问这个TCP服务器,因为这是一个原始的TCP服务而不是HTTP服务器。浏览器使用HTTP协议,而你的代码实现的是TCP层面的通信。

回到顶部