小编can*_*an.的帖子

如何在Unix套接字编程中获取本地IP地址和端口?

我用这个作为地址来创建一个新的服务器(socket(),bind(),listen()):

struct sockaddr_in newServer;
memset(&newServer, 0, sizeof(newServer));
newServer.sin_family = AF_INET;
newServer.sin_addr.s_addr = htonl(INADDR_ANY);
newServer.sin_port = htons(UNUSED_PORT);
Run Code Online (Sandbox Code Playgroud)

宏UNUSED_PORT定义为0.

我期望让服务器监听任何接口和未使用的端口.

我试图用来getsockname()获取我的本地IP地址和端口,但我得到了一些奇怪的输出.输出代码如下:

struct sockaddr_in localAddress;
socklen_t addressLength;
getsockname(newServerfd, (struct sockaddr*)&localAddress,   \
                &addressLength);
printf("local address: %s\n", inet_ntoa( localAddress.sin_addr));
printf("local port: %d\n", (int) ntohs(localAddress.sin_port));
Run Code Online (Sandbox Code Playgroud)

例如,我得到0.255.255.255:0,0.0.0.0:0,255.127.0.0:36237等,我的系统是Mac OS X 10.7.3.

--update--

使用后socklen_t addressLength = sizeof(localAddress);(感谢@cnicutar和@Jonathan Leffler),我总是得到0.0.0.0的本地IP; 那好吗?

c unix sockets ip port

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

Racket是否支持内部"定义"?

我是功能语言的新手,我正在使用Racket进行SICP编程任务.

下面是一段代码,Racket告诉我define: expected only one expression for the function body, but found 5 extra parts,在第5行((define (y k))中:

(define (simpson f a b n)

 (define h (/ (- b a) n))

 (define (y k)
  (f (+ a (* k h))))

 (define (factor k)
  (cond ((or (= k 0) (= k n))
         1)
   ((odd? k)
    4)
   (else
    2)))

 (define (term k)
  (* (factor k)
   (y k)))

 (define (next k)
  (+ k 1))

(if (not (even? n))
 (error "n …
Run Code Online (Sandbox Code Playgroud)

scheme sicp racket

3
推荐指数
1
解决办法
1327
查看次数

如何在Mac上构建和安装libvirt?

我参考了这篇文章,但使用了更新的库.要明确,我下载了 libgpg-error-1.10,libgcrypt-1.5.0,gnutls-3.1.3libvirt-1.0.0

libgpg-error-1.10,libgcrypt-1.5.0安装正常,配置gnutls-3.1.3时出现错误:

配置:错误:

*找不到Libnettle 2.5.请注意,您必须使用gmp支持编译nettle.

我想要的是使用libvirt的python绑定(即import libvirt在python中).任何人都可以解释如何获得一个可用的python libvirt库?

python macos install libvirt

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

如何使用javascript异步下载文件?

我正在构建一个Chrome扩展程序,以从网站下载一系列文件。下载功能源自如何使用JavaScript从URL保存文件

程序结构如下:

function download()
{
  while(there're still files to download)
  {
    saveFile(url);
  }
}
Run Code Online (Sandbox Code Playgroud)

但是我发现所有文件实际上在download()返回后立即写入磁盘。这些文件的地址以blob:从Chrome的下载管理器中进行检查时开始。

我想知道是否可以saveFile异步调用这些文件,一次只能写入一个文件。

javascript asynchronous google-chrome-extension

1
推荐指数
1
解决办法
5681
查看次数

如何从golang的地图中统一获取钥匙片?

我试过了

func Keys(m map[string]interface{}) []string {
    keys := make([]string, 0, len(m))
    for k := range m {
        keys = append(keys, k)
    }
    return keys
}
Run Code Online (Sandbox Code Playgroud)

不能在键参数中使用m(map [string] int类型)作为map [string] interface {}类型

我知道golang不支持泛型,因此可以统一获取密钥切片吗?

generic-programming go

0
推荐指数
1
解决办法
2715
查看次数