问题标签 [berkeley-sockets]

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 投票
1 回答
49 浏览

berkeley-db - 查询 Berkeley DB 中的模式实现

我在模式实现阶段找到了我们的代码正在使用的以下参数。我们只是使用默认值,如下所示。

我的问题:你能帮我理解以上7个参数的意义吗?这样我就可以知道何时根据需要调整这些值?

0 投票
1 回答
112 浏览

c++ - 使用 bind(0) 生成唯一的 IP 端口

我需要为某些程序生成端口号。谷歌告诉,与零端口绑定生成绑定未使用的端口。我要绑定零端口,记住它的号码,关闭端口。试图这样做?但 netstat 看不到我的程序的端口。Linux 2.6.27

0 投票
1 回答
1060 浏览

c++ - 使用 Berkeley 套接字进行多路复用

我有一个使用 Berkeley 套接字用 C++ 编写的 Web HTTP/1.1 服务器实现。我正在考虑实现对 HTTP/2.0(或 SPDY)的支持,它允许请求和响应多路复用:

HTTP/2.0 中的二进制帧层支持完整的请求和响应多路复用,允许客户端和服务器将 HTTP 消息分解为独立的帧,交错它们,然后在另一端重新组合它们。

我的问题如下;如何启用 HTTP/2.0(或 SPDY)类型的请求和响应多路复用与使用 Berkeley Socket API 编写的现有 HTTP/1.1 程序?也许前面提到的 HTTP/2.0(或 SPDY)支持的帧复用已经被 TCP/IP 堆栈中的现有机制处理了,或者?

澄清:

我对使用单个连接并行传递多个请求和响应的多路复用部分特别感兴趣,我从规范中不明白这是如何在应用程序级协议中实现的?有任何想法吗?

0 投票
1 回答
32 浏览

c - IRC 程序不打印最后一条消息

我有一个函数可以从 IRC 服务器接收 512 字节块的数据并将其打印到终端窗口,它是这样的:

但我想让它更加正交,所以我取出了对 recv 的调用并将其放入它自己的例程中,如下所示:

然后我会在我的主循环的每次迭代中调用 redchanRecv() ,然后打印缓冲区。但是当我运行它时,它会打印出几乎所有内容,除了一行。最后一行永远不会到达终端(它甚至会进入缓冲区吗?)。我真的觉得我犯了一个菜鸟的错误,但如果我能看到它,那就见鬼了。我该如何解决这个问题?

0 投票
1 回答
168 浏览

c - Berkeley sockets的passivesock portbase含义

我试图通过跟踪代码来理解被动套接字

http://merkez.ube.ege.edu.tr/~erciyes/ube528/passivesock.c

我发现下面的代码

我有一些关于htons(ntohs((u_short)pse->s_port) + portbase);

什么是portbase,我找到了评论u_short portbase = 0; /* port base, for non-root servers */但仍然知道它的含义?

我已经通过“被动套接字端口库”搜索了它,但找不到有用的信息。

提前谢谢。

0 投票
1 回答
107 浏览

c++ - C++ I/O 多路复用服务器过早关闭连接

我编写了一组基本的 C++ 类网络编程(除了 tcp_socket、udp_socket 和 ip_address 包装类类)。我在使用 I/O 多路复用服务器时遇到了一些问题。让我解释:

场景是这样的:

在这个方案中,根据应用程序的上下文,我添加了一个不可告人的抽象级别:类似于

主程序代码是这样的

这适用于第一个客户端,但是当第二个客户端到来时,它会收到 HELO 响应,但在第二个客户端 V.push_back(*newClient) 上,第一个连接关闭()。知道出了什么问题吗?

0 投票
2 回答
425 浏览

c++ - Berkeley Socket:recv 系统调用

服务器 recvsadhdag首次调用 recv 。

在第二次调用 recv 服务器 recv

服务器端:

函数 s2 由一个线程运行,参数通过套接字信息传递,在那里接受连接,并在新接受的客户端上调用 send 和 recv。

为什么会这样?或如何避免这种情况?

0 投票
0 回答
252 浏览

c++ - Berkley 套接字和读取超时

我的系统是运行 Ubuntu 的 ARM 上的 C++。

当我尝试进行阻塞读取时,我遇到了 Berkley Sockets 的一些问题,我收到一个错误并且代码是 EAGAIN。我在代码中放置了一个计时器,我发现错误发生在套接字超时之前。我也查看了正在连接的设备,但套接字没有关闭。

我不知道这有什么关系,但似乎这只发生在我在 gdb 下运行程序时……至少那是我唯一一次注意到它。

这是代码的简化版本。我已取出错误检查以使其更小。

0 投票
2 回答
386 浏览

c - 为什么 PF_PACKET RAW 套接字在“Wireshark”启动后停止丢失数据包?

我需要使用 RAW 套接字接收传入的 UDP 数据包,该套接字正在使用以下代码片段打开:

例如,我发送 100 个相同的数据包并尝试接收并计算它们。我使用 recv(...) 来做到这一点。只有 93 个数据包被传递,然后 recv(...) 挂起等待下一个数据包。但是,如果我在接收端计算机上运行“Wireshark”(使用 libpcap)并让它在“eth0”上监听 UDP 数据包,那么我的应用程序将始终捕获 100 个数据包而没有任何问题。

我不明白我实际上做错了什么,为什么“Wireshark”也会影响我的套接字接收器?

PS 我已经尝试增加接收缓冲区大小,但没有成功。

0 投票
1 回答
896 浏览

ios - 在iOS中,为什么底层网络发生变化时socket recv不会失败?

在 iOS 中,当我使用 SO_RCVTIMEO 设置了超时设置的阻塞套接字时。当我更改设备连接的 WiFi 网络时,对 recv 的调用将适当超时,但 errno 将报告为 EWOULDBLOCK 并且 recv 返回 -1。

这会导致我的外部处理循环尝试再次访问套接字(因为现在似乎没有可用的数据),实际上此时这是不可能的,因为设备现在连接到不同的网络端点。

如果我完全杀死网络,在多次 EWOULDBLOCK 之后,多次重复调用 recv 最终将失败并出现 ETIMEDOUT。

为什么会出现这种情况?套接字连接不应该因 ENETRESET 或类似的错误而中断并失败吗?

如果我没有 SO_RCVTIMEO,那么当 WiFi 网络发生变化时,套接字将永远阻塞。也没有bueno。

编辑:我认为我可以在本地套接字上启用 SO_KEEPALIVE 来检测远程套接字何时由于底层网络端点的变化而停止响应。这似乎也不起作用。