问题标签 [bsd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4077 浏览

c++ - BSD 套接字 - 使用 send 和 recv

我正在尝试使用 bsd 套接字在 linux 中实现一个简单的聊天程序。现在我只是想从客户端向服务器发送和接收一条消息。每当我运行代码时,recv 返回 -1 并且 errno 代码为 22。

服务器代码 -

客户端代码 -

即使我在服务器端收到错误,我也没有在客户端收到错误消息 - 它只是正常退出。

根据-http: //www.workers.com.br/manuais/53/html/tcp53/mu/mu-7.htm errno 22 错误消息仅表示“无效参数”。但我不知道如何准确解释……如果一个论点无效,为什么它还要编译?

如果有人能指出我在这里做错了什么,我将不胜感激。欢迎您指出任何其他小笔记。谢谢你的帮助。

0 投票
4 回答
11060 浏览

c++ - BSD 套接字 - 如何使用非阻塞套接字?

我正在尝试使用非阻塞 TCP 套接字。问题是他们仍然在阻塞。代码如下 -

服务器代码 -

客户端代码 -

每当我运行它时,服务器仍然等待我发送一些东西,然后它才会读取并输出客户端发送的内容。我希望服务器或客户端能够在我键入消息后立即发送消息,并让另一个在那时读取并输出消息。我认为非阻塞套接字是答案,但也许我只是做错了什么?

另外,我使用文件而不是我的 127.0.0.1 地址作为 sockaddr 的数据。如果这不是正确使用它的方式,请随意这么说(它以前使用文件的方式工作,所以我就这样保留它)。

任何帮助表示赞赏。

0 投票
3 回答
60683 浏览

c - 对非阻塞套接字使用 select()

我正在尝试使用 select 函数在服务器和 1 个客户端(不再有)之间进行非阻塞 i/o,其中通信顺畅(可以随时发送,另一个将接收而无需等待发送)。我找到了一个包含一些代码的教程,并试图将其改编为我的。这就是我所拥有的——

服务器

客户(基本上相同,只是减去了一个接受呼叫) -

问题是当我运行它们时,什么也没有发生。我可以输入一个并按回车键,而另一个屏幕上什么也没有显示(反之亦然)。这不是我要调试的全部信息,这是我第一次真正尝试使用 select,所以我想也许我只是不知道一些简单的事情。如果有任何发现是错误或奇怪的,请指出,任何帮助表示赞赏。

0 投票
3 回答
1382 浏览

c++ - getaddrinfo() 上的段错误

我的 getaddrinfo 调用出现分段错误,无法弄清楚原因。它发生在我的服务器和客户端上。一些代码(服务器端)是 -

在 tcpserver.cpp-

主要是

int传递给构造函数的值被强制转换为一个forconst char*端口。

当我运行 gdb 时,它给了我一个回溯 -

所以“地址 0x1356 越界”让我相信端口有问题,但我不知道可能出了什么问题。如果有人能指出错误,我将不胜感激。谢谢你的帮助。

0 投票
2 回答
875 浏览

database - 满足这些要求的最快的 NoSQL 数据库是什么?

nosql我想要一个具有以下要求的最快数据库

  • 它必须在 Apache 或 BSD 或其他下获得许可,但不得 GPL
  • 它必须支持java
  • 它应该在嵌入式模式下工作
  • 应提供高性能搜索(用于单词内的字符搜索)
  • 应该提供压缩选项。

如果您知道任何满足我要求的数据库,请提出建议。

0 投票
5 回答
2202 浏览

bash - 如何测试 rm 的 GNU 或 BSD 版本?

GNU 版本rm有一个很酷的 -I 标志。从手册页:

Mac 不会:

有时人们coreutils在 Mac 上安装了(GNU 版本),有时却没有。有没有办法在继续之前检测到这个命令行标志?我想在我的 bash_profile 中有这样的东西:

0 投票
4 回答
152 浏览

c++ - 定期发送时,数据包被堆叠

我正在尝试定期(每秒)通过 TCP 套接字发送一条消息。有时不会发送完整的消息,或者会堆叠两四条消息并同时发送。如果返回值为 0 或 < 0,我有 if 语句,但这些语句永远不会正确。我尝试了一种明显的方法来检查 send() 的确切返回值,以查看是否发送了更少或更多的字节。它只返回我在要发送的参数中指定的数字(如果发送阻塞直到它发送那么多,这很有意义),即使发送的字节数更少。那么有没有一种准确的方式来表示“发送了正确大小的数据包?没有? - 做点什么”?

0 投票
3 回答
1672 浏览

tcp - WLAN 上的 TCP 套接字

我有一个项目使用 TCP 套接字在服务器和一个客户端之间进行通信。到目前为止,我一直在一台计算机上执行此操作,因此我刚刚使用本地地址“127.0.0.1”作为绑定和连接到两侧的地址,并且工作正常。现在我有第二台计算机作为客户端,但我不知道如何相应地更改地址。它们通过未连接到 Internet 的网络连接。在代码看起来像这样之前 -

服务器 -

客户 -

我知道这应该很简单,但我不知道如何更改 IP 以使其正常工作。我尝试在这些行的引号中设置服务器计算机的 IP 地址 - if ((status = getaddrinfo("127.0.0.1", port, &hints, &servinfo)) != 0) 和 unlink("127.0.0.1");

然后将客户端代码中的地址更改为该行中客户端计算机的 IP 地址 - if ((status = getaddrinfo("127.0.0.1", port, &hints, &servinfo)) != 0)

每当我这样做时,它都会告诉我连接被拒绝。我也尝试过相反的方式,将服务器的地址放在客户端的行中,将客户端的地址放在服务器的行中,以及其他一些尝试。在这一点上,我觉得我只是在猜测。那么有人可以帮助我了解如何将其从使用一台计算机的本地地址更改为连接两台计算机吗?任何帮助表示赞赏。

0 投票
1 回答
3822 浏览

c - BSD 操作系统上的原始套接字

我一直在用 C 编写一些套接字代码。我需要修改数据包头并控制它们的发送方式,所以我采用了原始套接字方法。但是,我编写的代码在 BSD 系统(Mac OS X/Darwin、FreeBSD 等)上无法编译。

我对此进行了大量研究,发现 BSD 系统无法像 Linux(甚至 Windows)那样处理原始套接字。从我读过的内容来看,我似乎需要使用 bpf(伯克利数据包过滤器),但我无法弄清楚 bpf 是如何工作的,或者我将如何将它与原始套接字一起使用。

如果有人能对此有所了解,我会非常兴奋:D

PS 我什至会对一些源代码感到满意,这些源代码展示了如何在 BSD 环境中处理原始套接字。它不一定是指南或解释。我只是想看看它是如何工作的。

0 投票
3 回答
574 浏览

c++ - 如何使用 BSD 套接字查找 IP 地址?

我在 wlan 上使用 BSD 套接字。我注意到当我连接到我的服务器计算机时,它的 IP 地址偶尔会发生变化。问题是我将 ip 地址作为文字字符串输入到我的代码中。因此,每当它发生变化时,我都必须进入代码并在那里进行更改。如何更改代码以使其使用当时的任何 ip?这是服务器代码中的调用

和客户端是一样的。我为双方的地址尝试了 NULL,但客户端将无法连接,只是给我一个“连接被拒绝”错误。

谢谢你的帮助。