问题标签 [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 投票
7 回答
483 浏览

c# - 为什么附加 VS 调试器后应用程序的行为会有所不同?

我有一个用 C# 编写的桌面应用程序。它正在尝试管理套接字连接并失败。如果将同一应用程序附加到 Visual Studio 调试器,则它是成功的。

怎么调试?

0 投票
13 回答
214862 浏览

c++ - 如何获取本地计算机的 IP 地址?

在 C++ 中,获取本地计算机的 IP 地址和子网掩码的最简单方法是什么?

我希望能够在我的本地网络中检测到本地机器的 IP 地址。在我的特殊情况下,我有一个子网掩码为 255.255.255.0 的网络,我的计算机的 IP 地址是 192.168.0.5。我需要以编程方式获取这些有两个值,以便向我的网络发送广播消息(对于我的特殊情况,格式为 192.168.0.255)

编辑:许多答案没有给出我预期的结果,因为我有两个不同的网络 IP。Torial的代码成功了(它给了我两个 IP 地址)。

编辑 2:感谢Brian R. Bondy提供有关子网掩码的信息。

0 投票
4 回答
1902 浏览

c - 低于底层普通 bsd 套接字

你如何在 C 中做低级套接字,例如:实际发送一个 SYN。

0 投票
1 回答
2961 浏览

sockets - 如何在 VxWorks 5.5 中接收 UDP 组播

我在 VxWorks 5.5 下无法接收 UDP 多播。我加入了多播组:

相邻 Windows 机器上的类似代码确实接收多播。我能够从 VxWorks 发送多播;ifShow() 表示接口支持多播;MCAST_ROUTING 在内核配置中启用,但仍无法接收多播。

编辑:我需要在 RealTek 以太网驱动器 RX 配置寄存器中设置一个位,以使多播能够传递到应用层。

0 投票
10 回答
324020 浏览

java - java.net.SocketException:软件导致连接中止:recv 失败

对于以下错误的确切含义,我无法找到适当的答案:

java.net.SocketException: Software caused connection abort: recv failed

笔记:

  • 此错误不常见且不可预测;虽然得到这个错误意味着所有未来的 URI 请求也将失败。
  • 唯一可行的解​​决方案(也只是偶尔)是重新启动 Tomcat 和/或实际机器(在本例中为 Windows)。
  • URI 绝对可用(通过要求浏览器进行获取来确认)。

相关代码:

0 投票
2 回答
4021 浏览

java - Java Multicast Time To Live 始终为 0

我在数据报数据包上设置 TTL 时遇到问题。在将数据包发送到多播套接字之前,我在数据包上调用 setTTL(...) 方法,但是如果我用 ethereal 捕获数据包,则 TTL 字段始终设置为 0

0 投票
4 回答
328 浏览

c# - 套接字客户端类的异常与结果代码

我有一个封装与服务器的 tcp 套接字通信的类。对于发送到服务器的每条命令消息,服务器都会发回一个响应消息,该响应消息总是包含一个响应代码(OK,Fail)。使用我的课程,每个命令都可以同步或异步执行。

基本上可以发生两种类型的异常:由断开连接或其他不可恢复的错误引起的“故障”和“发送缓冲区已满”等意外异常。如果发生故障,在重新建立连接之前,任何命令都无法继续或重试或任何其他操作。在响应失败甚至异常的情况下,可以再次尝试该命令...

所以,现在我的同步命令方法返回一个可以具有以下值的枚举:OK、Fail、Fault。如果发生异常,则简单地将其引发到调用线程(在同步命令中)。对于异步命令,Result 属性枚举值可以包含一个额外的值:OK、Fail、Fault 或 Exception,并且回调可以通过命令对象的 Exception 属性访问实际的异常对象。

你怎么看这个策略?我很想根本不为同步命令引发异常,而只是在内部记录异常并返回第 4 个枚举值,因为这就是我在任何给定情况下真正对异常所做的一切......或者,我应该不使用结果代码,只是在所有情况下引发异常,甚至是错误?

谢谢。

0 投票
4 回答
1532 浏览

python - Python中手机的Socket编程

我已经编写了通过 TCP 套接字在我的手机和计算机之间进行通信的代码。当我在交互式控制台中逐行输入代码时,它工作正常。但是,当我尝试直接通过 filebrowser.py 运行脚本时,它就不起作用了。我正在使用诺基亚 N95。无论如何我可以不使用filebrowser.py直接运行这个脚本吗?

0 投票
4 回答
2589 浏览

linux - 如何最有效地处理大量文件描述符?

对于处理大量套接字连接的程序(例如 Web 服务、p2p 系统等),似乎有几个选项可用。

  1. 生成一个单独的线程来处理每个套接字的 I/O。
  2. 使用select系统调用将 I/O 多路复用到单个线程中。
  3. 使用poll系统调用来多路复用 I/O(替换 select)。
  4. 使用epoll系统调用来避免必须通过用户/系统边界重复发送套接字 fd。
  5. 使用 poll API 生成多个 I/O 线程,每个线程多路复用一组相对较小的连接总数。
  6. 除了使用 epoll API 为每个独立的 I/O 线程创建单独的 epoll 对象之外,按照 #5。

在多核 CPU 上,我希望 #5 或 #6 具有最佳性能,但我没有任何硬数据支持这一点。搜索网络出现了这个页面,描述了作者在上面测试方法#2、#3 和#4 的经验。不幸的是,这个网页似乎有 7 年的历史,没有发现明显的最近更新。

所以我的问题是人们发现这些方法中的哪一种最有效和/或是否有另一种方法比上面列出的任何一种方法更好?对现实生活中的图表、白皮书和/或网络可用文章的引用将不胜感激。

0 投票
3 回答
39936 浏览

c - 如何在 C 中创建用于读取套接字数据的缓冲区

使用 C/C++ 套接字编程,以及“read(socket, buffer, BUFSIZE)”方法。“缓冲区”到底是什么我知道 char 和 byte 是一回事,但是字节数组中有多少元素有关系吗?缓冲区是否需要能够保存整个消息直到出现空字符?