草庐IT

init_net_server_extension

全部标签

http - Go net listener 关闭及常规处理

我正在开始例行程序并在网络监听器(HTTP)上进行监听。我想关闭监听器,关闭例程并开始一个新例程,然后重新启动监听器。当我关闭监听器时,一切都乱套了。(listener是全局的)listener,_=net.Listen(CONN_TYPE,CONN_HOST+":"+CONN_PORT)goPassThrough()在哪里funcPassThrough(){verbose:=flag.Bool("v",false,"shouldeveryproxyrequestbeloggedtostdout")flag.Parse()proxy:=goproxy.NewProxyHttpServe

go - net/http 不适用于 ipv6 地址

我正在尝试向本地ipv6地址(通过mdns发现)发出“GET”请求。问题是请求fails.这是为什么?packagemainimport("fmt""net/http")funcmain(){url:="http://[fe80::cf5:b02f:27c3:2abe]:7070/kw/"rsp,err:=http.Get(url)fmt.Println(rsp,err)}输出Gethttp://[fe80::cf5:b02f:27c3:2abe]:7070/kw/:dialtcp[fe80::cf5:b02f:27c3:2abe]:7070:socket:Unknownprotoco

variables - Golang 的 init() 函数中的包范围变量赋值

我想在一些Go代码中初始化一个包范围的变量以连接到数据库,但我一直收到nil指针异常,很明显赋值没有正确发生。这会引发错误:packagemainimport("fmt""database/sql"_"github.com/lib/pq")varconnection*sql.DBfuncinit(){connectionString:="host=172.17.0.3dbname=postgresuser=postgrespassword=postgresport=5432sslmode=disable"connection,err:=sql.Open("postgres",conne

ssl - 为什么 grpc 服务器示例使用 net.Listen 而不是 tls.Listen

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭5年前。Improvethisquestion我正在设置一个将使用TLS进行客户端授权/身份验证的golanggrpc服务器。我见过的所有服务器设置示例都使用net.Listen()而不是tls.Listen()。这是为什么?import("crypto/tls""github.com/pkg/errors""google.golang.org/grpc""google.golang.org/grpc/credentials""net

http - 在 go net/http 中获取 http body

我想使用go获取http正文数据。我的演示:我在http请求头中设置了Content-Type:application/x-www-form-urlencoded,没有报错,但是获取不到httpbody数据。像这样的Http请求数据:我只想获取http主体,我不想使用方法request.FormValue。我该怎么办? 最佳答案 在读取表单值之前调用ParseFormr.ParseForm()fork,v:=ranger.Form{fmt.Println(k,v)} 关于http-在go

sockets - 使用 os.OpenFile() 而不是 net.Listen()

我深入研究了os.OpenFile和net.Listen的调用堆栈,看看我是否可以使用os创建一个UNIX域套接字。打开文件。以下是我的尝试。但是,在跟踪两个调用堆栈(os.OpenFile和net.Listen)之后,我仍然感到困惑。显然,下面的代码没有从文件中读取数据,而是将数据存储到文件系统。如何使用os.OpenFile实现UNIX域套接字?如果os.ModeSocket不与os.OpenFile一起使用以创建UNIX套接字,它的用途是什么?packagemainimport("fmt""log""os")funcmain(){sock,err:=os.OpenFile("f.

go - HTTP.Server 关闭导致运行时错误

我有一个在darwin/amd64上用Go1.9.2编写的goroutine,它会导致运行时错误:无效的内存地址或nil指针取消引用。我认为这是因为某种与例程退出顺序相关的竞争条件,但我不确定。主应用程序正在做几件事,所以我将网络服务器作为goroutine启动,然后监听来自父进程的退出信号并尝试在返回之前彻底关闭所有内容。函数如下://WebServerdefinesthehandlerendpointsandlaunchesthewebserverlistenerfuncWebServer(wg*sync.WaitGroup){//Makesuretheexitisnoteddef

sqlite - mattn/go-sqlite 3's regexp extension faster than sqlite3' s LIKE 运算符是否用于 '%word%' 搜索?

我目前正在使用mattn的go-sqlite3包,并希望使用LIKE'%word%'条件进行许多选择语句搜索。mattn的正则表达式扩展是否比sqlite内置的LIKE运算符更快?(更具体地针对LIKE'%word%'搜索) 最佳答案 mattn/go-sqlite3项目本身已经有相当多的例子SELECTbenchmarksfuncBenchmarkRows(b*testing.B){db.once.Do(makeBench)forn:=0;n您可以根据您的特定测试调整它们。 关于sql

go - 无法将 String 转换为 *net.TCPlistener 类型

我想将字符串放入net.Listener中,但出现错误:./server.go:26:23:cannotusemainServer(typeinterface{})astypestringinargumenttonet.Listen:needtypeassertion./server.go:27:28:cannotusegpServer(typeinterface{})astypestringinargumenttonet.Listen:needtypeassertion这是我的代码:viper.SetConfigFile("config.json")viper.AddConfigPa

http - 如何让 Go 的 http.Server 闲置一段时间后退出?

我正在使用标准库net/http包在Go中编写一个Web服务器,该包利用systemd套接字激活。我有基本的工作原理,这样服务器在第一次连接到监听套接字时启动,并且我可以在发出信号时执行正常关闭(即systemctlstop将在没有切断事件请求)。我希望服务器在闲置一段时间后自动退出。类似于以下内容:当最后一个事件请求完成时,启动一个计时器,比如30秒。如果在此期间有任何新请求到达,则停止计时器。如果计时器到期,则执行正常关机。我们的想法是释放服务器正在使用的资源,因为我们知道systemd会在新客户端出现时再次启动我们。我不确定的是第(1)和(2)部分。理想情况下,我想要一个不涉及修