相关疑难解决方法(0)

TCP选项SO_LINGER(零) - 何时需要

我想我理解该选项的正式含义.在我正在处理的一些遗留代码中,使用了该选项.客户抱怨RST作为对其接近的连接的FIN的回应.

我不确定我是否可以安全地将其删除,因为我不明白何时应该使用它.

能否举例说明何时需要该选项?

sockets networking tcp setsockopt so-linger

84
推荐指数
4
解决办法
12万
查看次数

无法分配请求的地址 - 可能的原因?

我有一个由主服务器和分布式从服务器组成的程序.从属服务器向服务器发送状态更新,如果服务器在固定时间内没有从特定从属设备收到消息,则它将从属设备标记为关闭.这种情况一直在发生.

通过检查日志,我发现从服务器只能向服务器发送一个状态更新,然后永远不能发送另一个更新,总是无法调用connect()"无法分配请求的地址(99).

奇怪的是,从服务器能够向服务器发送多个其他更新,并且所有连接都发生在同一端口上.似乎这种失败的最常见原因是连接处于打开状态,但我无法找到任何未解决的问题.还有其他可能的解释吗?

为了澄清,这是我如何连接:

struct sockaddr *sa; // parameter
size_t           sa_size; //parameter
int              i = 1;
int              stream;

stream = socket(AF_INET,SOCK_STREAM,0);
setsockopt(stream,SOL_SOCKET,SO_REUSEADDR,&i,sizeof(i));
bindresvport(stream,NULL);
connect(stream,sa,sa_size);
Run Code Online (Sandbox Code Playgroud)

此代码用于获取与另一个服务器的连接,并且这4个调用中的任何一个失败都会导致该函数失败.

c sockets tcp errno

22
推荐指数
4
解决办法
11万
查看次数

获取"127.0.0.1无法分配请求的地址" - http.Client

我正在做的事情是相当直接的.我需要创建一个非常小而快的"代理"服务器.目前我有一个代理到(nodejs)和代理服务(go)的基线服务器.请原谅缺乏实际的"代理" - 只是现在测试.

基线服务

var http = require('http');
http.createServer(function (req, res) {
    // console.log("received request");
    res.writeHead(200, {'Content-Type': 'text/plain'});
      res.end('Hello World\n');
}).listen(8080, '127.0.0.1');
console.log('Server running at http://127.0.0.1:8080/');
Run Code Online (Sandbox Code Playgroud)

代理服务

package main

import (
  "flag"
  "log"
  "net/http"
  "net/url"
)

var (
  listen = flag.String("listen", "0.0.0.0:9000", "listen on address")
  logp = flag.Bool("log", false, "enable logging")
)

func main() {
  flag.Parse()
  proxyHandler := http.HandlerFunc(proxyHandlerFunc)
  log.Fatal(http.ListenAndServe(*listen, proxyHandler))
  log.Println("Started router-server on 0.0.0.0:9000")
}

func proxyHandlerFunc(w http.ResponseWriter, r *http.Request) {
  // Log if requested
  if *logp {
    log.Println(r.URL) …
Run Code Online (Sandbox Code Playgroud)

http go

3
推荐指数
2
解决办法
8026
查看次数

标签 统计

sockets ×2

tcp ×2

c ×1

errno ×1

go ×1

http ×1

networking ×1

setsockopt ×1

so-linger ×1