networking相关内容
我知道将端口号绑定到 TCP 套接字 来发送数据并不容易(因为系统通常将随机端口绑定到套接字). 但我在一篇文章中读到,通过使用一些低级网络方法,您可以将端口号绑定到 TCP 套接字,然后使用它来发送数据? 有没有人知道如何做到这一点? 我正在使用c编程语言 解决方案 连接前绑定. s = socket(AF_INET, SOCK_STREAM, 0);/* ... *
..
我想使用 C# 的 UdpClient 来监听任何传入的 UDP 数据包.我想从任何 IP 和任何端口接收数据包. 我尝试了以下方法: UdpClient udpClient = new UdpClient(0);IPEndPoint ep = new IPEndPoint(IPAddress.Any, 0);byte[] data = udpClient.Receive(ref ep);
..
为什么我们不能使用进程 ID 来获取我们在套接字编程中绑定的端口.在套接字编程中,我们创建套接字并获取套接字描述符,然后绑定到特定端口.对于多个连接,为什么我们不使用进程 ID,因为所有连接也是返回进程 ID 的进程? 解决方案 这是一个有趣的想法,但我认为它会引发一些问题: 您如何知道要连接到哪个进程 ID? 如果您想在同一个进程中监听多个“端口"怎么办?您只有一个进程 ID.
..
在浏览开源代码库时,我想到了一个有趣的场景.假设在成功建立 TCP 连接后,TCP 客户端必须发送一个序列号 = 101 的数据包.相反,它发送一个序列号为 201 的 FIN.现在 TCP 服务器认为 FIN 无序并将其排队等待一个要到达的数据包.我的问题是根据 RFC,如果服务器接收到序列号 = 101 且长度 = 150 的数据包,TCP 端点的行为应该是什么.它会覆盖之前发送的 FIN 吗
..
第一次发帖,希望这是一个简单的: 我需要向一个硬件发送一个广播数据包,当它启动时,它与我的机器位于不同的子网中,以便告诉它将其 IP 地址重置为我网络上的一个.但是,除非我使用 DHCP,否则我似乎无法从自己的子网广播,最终我将无法做到.网络上没有路由器,只是在我的机器和我要与之通话的机器之间进行简单的切换,再加上网络上的其他几台 Linux 机器. 所以基本上这个示例代码在测试环境中
..
我一直在编写一个程序,它在 UDP 之上使用停止和等待协议通过 LAN 和 WAN 发送数据包.我最近一直在测试我的程序,并注意到较大数据包(接近 64k 字节)的数据包丢失率更高.直觉上这是有道理的,但真正的原因是什么? 解决方案 UDP 数据包大于 MTU 大小 将自动拆分为多个数据包,然后由接收者重新组合.如果这些多个子数据包中的任何一个被丢弃,那么接收器也将丢弃其余的子数据包.
..
问题 是否应该丢弃带有未知 IPv6 扩展标头的数据包? 详情 我无法通过检查 RFC 找到这个问题的答案.IPv6 Essentials 一书在第 22 页指出: 如果一个节点需要下一个头,但无法识别下一个头字段中的值,则需要丢弃该数据包并向数据包的源发送 ICMPv6 参数问题消息. 我将其解读为:除非所有沿路径的 IPv6 堆栈知道如何处理标头,否则无法丢弃带有
..
假设一部手机通过手机 A 连接到 wifi,地址为 Dynamic Ip ex:192.168.0.34 并通过 port 7567 的服务器套接字进行侦听, 在如果我有另一部电话 B 连接公共 ip 上的电话 B 说 10.0.0.56 并且我有 wifi 路由器 ip 说 ex 55.56,我可以通过什么方式使用任何编程语言连接到该套接字.89.76 ? 解决方案 如果不使用端口转发,
..
在 Linux(内核 3.0.0.12;带有 GCC 4.6.1 的 C++)上,我想通过 (POSIX) 发送调用彼此发送几个 TCP 数据包. 使用 Wireshark,我可以看到数据包不是在单独的 TCP 帧中发送的,而是两个或更多在一个数据包中一起发送. 有没有办法告诉系统从自己的 TCP 数据包中的一个 send() 缓冲区发送数据?程序流不应在发送调用时阻塞. 解决方
..
我已经读到,在通过蓝牙进行通信之前必须先配对,但我想知道, 我可以创建一个应用程序来读取文本吗?由其他蓝牙应用广播而未配对. 因为我们可以看到设备周围其他蓝牙设备的名称.所以我们不能将我们的蓝牙收音机设置为可以读取任何蓝牙广播文本消息的状态. 示例:有 createInsecureRfcommSocketToServiceRecord() &listenUsingInsecure
..
在使用网络等方面,我是一个初学者,所以先向你道歉.不久前,我在我的机器上本地设置了一个 mySQL 数据库,并构建了许多使用它的简单程序.(又名 root:localhost 之类的东西). 这很好,但我现在希望让我工作的其他同事从他们的机器上访问数据库,但我不知道怎么做. 可能会有一些网络保护问题(防火墙等),因此可能需要考虑...(虽然我有 IT 的帮助,但 IT 或我自己都不知道
..
谁能给我一些关于在 C++ 中使用套接字连接客户端和服务器的示例.我已经阅读了一些教程,现在我想实现它.如何开始? 解决方案 你可以在这里找到一个工作的客户端-服务器程序:Beej 网络编程指南
..
我需要在这部分代码上创建一个 10 秒的超时时间 DatagramPacket getack = new DatagramPacket(incoming, incoming.length); socket.receive(getack); 我需要它列出 10 秒的传入数据包,如果它在 10 秒之前收到一个数据包,它将跳到 if 语句,以防它达到 10 秒,它会跳到 else 并重新发
..
stub 在服务器端做了什么?什么是骨架? 这是来自维基百科的图表.我在服务器机器和客户端机器上都安装了 stub.我知道存根有助于客户端的网络,但存根在服务器端有什么作用? 还有上图中的skeleton是什么意思? 解决方案 看下图: 简而言之,stub 和 skeleton 是 Web 服务设置中的对应物.Skeleton 属于服务提供方,stub 属于接收方.在较低
..
我只是想从现有的本机套接字创建一个 boost ip::tcp::socket.在 assign 函数中,第一个参数必须是“protocol_type",第二个参数必须是“native_type",但它从不解释它们是什么或给出其使用示例. 我猜第二个应该是套接字描述符,但我非常感谢澄清. void SendData (int socket, std::string message){boo
..
我想知道为什么Linux内核(或任何其他主流操作系统)没有零拷贝网络功能的原因?零拷贝是指,数据包/数据流不会被复制以传递给用户空间中的应用程序,但例如使用内存池类型的分配器在内核和用户空间之间共享内存.我自己提出了 3 个理论: a) 我想存在安全问题.但是当它们只是用作缓冲区时,真的没有办法在用户空间和内核之间安全地共享内存吗? b) 我想存在稳定性问题.但是我们不能假设谁使用零拷
..
这是我的场景: A 是配置服务器,B 是客户端.每当 B 的设置发生任何变化时,它都会将相应的配置文件上传到 A. 我是一名自动化工程师,致力于实现自动化.一种情况是断开 A 与网络的连接或停止服务器 A.对 B 执行一些更改并确保 B 无法将文件上传到配置服务器 A. 要使其自动化,停止服务器 A 并执行适当操作的简单方法. 由于 A 和 B 也被其他方用于其他目的,所以
..
我想获取连接到本地网络的可用设备列表(它们的 IP 地址或主机名应该没问题).我在 C# 中有一些示例,但我找不到任何使用 C/C++ 的示例.我熟悉 BSD 套接字 API,只是为了澄清一下. 我有一个“存根"的想法:也许我应该确定我 LAN 上的设备可能属于的 IP 地址范围,然后确定它们是否存在.G.回应 PING,或类似的东西.我怎样才能做到这些? 我希望我的应用程序在 Lin
..
我的计算机上有两个网络接口(eth0 和 eth1),我正在尝试使用特定的网络接口(eth1)拨号连接.鉴于 Go 是一种系统语言的声明,我认为是这样,但是当前的标准库真的有可能吗? 到目前为止,我必须按名称获取接口 InterfaceByName (eth1) 然后我在 Addrs 方法提取第一个地址[0],这似乎是eth1接口的源地址(例如xxx.xxx.xxx/24);另一个是 ipv
..
如何通过一些平均 ping 速率计算 Internet 连接的速度.其中涉及哪些计算.是否可以通过 ping 速率计算上传/下载限制 编辑如果 ping 不是解决方案,还有什么办法? 解决方案 我使用ping计算本地网络的带宽.我认为它与其他测量带宽的方法(例如下载大文件)一样准确.如果您有到 Internet 的对称链接(即不是 adsl),您也可以将它用于您的 Internet
..