问题标签 [windows-networking]

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 回答
43 浏览

c# - 如何使用非 Windows 机器按名称访问 Windows 机器上的 serer?

我使用 c# 构建了一个小型服务器应用程序。

这个想法是局域网上的人将能够通过机器名称(托管服务器的机器的名称)以及 IP 地址来访问服务器。

当我使用另一台 Windows 机器时,这可以正常工作。但是,当我在 Android 上使用 Google 浏览器时,只有 IP 有效。

有什么方法可以配置主机以确保非 Windows 机器可以使用机器名称?

0 投票
0 回答
462 浏览

windows - Windows 7 路由问题

我真的坚持这一点,我被告知堆栈溢出是一个寻求建议的好地方。

我有一台运行 Windows 7 Professional 的机器,带有两个内部千兆网卡。我使用注册表项“IPEnableRouter”启用了 IP 路由,将其设置为 1。

这是 ipconfig 的输出:

几年前我已经在几台机器上设置过它并且效果很好,我想我只是忘记了一些东西,但现在它让我发疯了。从 192.168.1 网络我可以 ping 192.168.1.1 和 172.16.65.65,但不能 ping 172.16 网络上的任何其他主机。所以 192 网络中的所有主机都没有访问权限。

我什至尝试过启用路由和远程访问服务,但这并没有什么不同。我也尝试禁用所有防火墙以确保它没有被阻止。

当我从 192 跟踪 ping 到互联网时,它到达 172.16.65.65,然后再也不会继续前进,就像机器不会转发数据包一样,但我不知道为什么。

任何建议或尝试的事情都将非常感激,如果您需要更多信息,请告诉我。

0 投票
2 回答
3713 浏览

c# - 为什么带有 UNC 路径的 .NET 的 File.Open 会产生过多的 SMB 调用?

我有一段代码需要使用 UNC 路径从 NAS 服务器打开和读取大量小文本文件。此代码是最初用 C++ 编写但现在正在转换为 C# 的模块的一部分。C# 版本要慢得多。我确定打开文件的调用几乎是所有性能差异的原因。使用 WireShark 我发现这是因为 System.IO.File.Open 调用比类似的 C++ 代码发出的 SMB 网络请求要多得多。

C++ 代码进行此调用:

这会产生以下 SMB 请求序列:

C# 代码进行此调用:

这会产生以下 SMB 请求序列:

为什么 System.IO.File.Open 会发出所有这些额外的 SMB 请求?有什么方法可以更改此代码以避免所有这些额外的请求?

0 投票
1 回答
185 浏览

delphi - 程序在不允许计算机用户这样做的情况下打开和写入映射驱动器的正确方法是什么?

我正在使用一个程序,该程序旨在记录和显示用户输入数据,以便在培训过程中跟踪课程。其中一项要求是我们能够保留每门课程行程的副本(以 .pdf 格式)以显示在课程旁边。这个程序是用 Delphi 7 编写的,预计可以在 Windows 7 机器上运行。

我已经设法在客户的主数据库(运行 CentOS 6)上设置了一个远程位置,作为 samba 共享,来存储文件。但是,我现在在处理相关文件时遇到了可用性问题。

客户端不希望进程转到映射驱动器;他们过去曾遇到过个人用户将另一组程序所需的映射驱动器视为个人驱动器空间的问题。但是,如果没有这个,我能想出的保存/读取 .pdf 文件的唯一方法是共享的直接路径(即,将程序设置为\\server\share\直接复制到/读取)——这引起了人们的抱怨这需要很长时间。

处理这个问题的正确方法是什么?我对这个问题有几个想法,但我无法确定最好遵循哪条路径:

  1. 我知道我可以在程序执行开始时映射驱动器,然后在结束时取消映射,但这使得最终用户可以在程序启动或程序崩溃时保存它。

  2. 正如我所说,直接的“写入共享”方法绕过了对映射驱动器的需求,被认为太慢了(可能是因为显示文件总是有点迟钝)。

  3. 我没有能力在这些机器上设置组策略,所以我不能那样隐藏驱动器 - 我真的不认为我的程序尝试更改用户的注册表是一个明智的主意机器,它也可以解决这个问题。

  4. 我考虑过尝试以其他用户身份打开驱动器,但我不确定这是否有帮助 - 看过之后,我认为(可能不准确)它不会是任何防御;最终用户仍然可以访问在使用窗口期间打开的驱动器。

鉴于这四个选项似乎不太可用,处理这些要求的正确方法是什么?

0 投票
2 回答
216 浏览

windows - 在典型的 nw 应用程序中,为什么我们需要 NotifyRouteChange

我有一个注册 NotifyRouteChange() 并在异步调用中等待的应用程序。我们知道,基于 Windows 操作系统的路由表更改,此 API 会被回调。我需要更多关于是什么让 Windows 触发此功能的信息?

在我的 Win 7 Professional 环境之一中,我在一秒钟内收到 100 个 IP 地址更改通知。如何减少它?

谢谢,萨拉瓦娜

0 投票
1 回答
553 浏览

networking - 收到 arp 响应,但 ICMP 数据包甚至没有到达自己的主机

我的环境有 2 台主机和每台主机上的虚拟机。由于虚拟机和主机属于不同的子网,因此创建了 NVGRE 隧道。我正在使用 Windows server 2012 R2 主机和相同的虚拟机。主机是背靠背连接的。如果我将虚拟机和主机放在同一个子网中,Ping 可以工作。

两个虚拟机都在接收彼此的 ARP 请求和响应。每个 VM 的 ARP 缓存都具有其他 VM 的动态条目。

但是来自 VM 的 ICMP 请求数据包甚至在其主机上都看不到。

0 投票
0 回答
118 浏览

windows - 什么会导致写入 Windows 上的 TCP 套接字的数据在传输之前被更改?

某些东西正在改变写入我的 Windows (Windows 7) 机器上的 TCP 套接字的数据 - 具体来说,当字节遵循特定的 HTTP POST 模式时,当从连接的相应侦听器套接字端读取字节时,模式会重复。

以下字节被写入客户端套接字(注意:每行以回车符和换行符结尾,两个非空行后跟两个空行):

从侦听器套接字读取的内容是:

我已经在我的机器上的环回(127.0.0.1)地址上对此进行了测试,但是当侦听器套接字在另一台机器上时,我也看到了修改后的字节,所以看起来字节在客户端被修改了。我已经在我的机器上使用 netcat 和 java 程序(见下文)重现了这个问题,所以问题似乎出在 TCP 堆栈中。我只能使用一组特定的 HTTP 标头来触发它,因此似乎有什么东西正在对我的 TCP 通信进行深度数据包检查并对其进行更改。如果我稍微改变输入字节(例如,它不是一个有效的 HTTP 请求,例如,将“POST”更改为“QOST”,它工作正常)。

下面是我编写的一个 java 程序,它演示了这一点及其输出:

输出:

下面是在 windows 上使用 netcat(来自 cygwin 的 nc.exe)的相同测试(注意:文件 test_payload.blob 包含如上所述的字节,并从 java 程序中的 PAYLOAD 常量派生):

启动 nc 监听器:

运行 nc 客户端(在侦听器的另一个 shell 中):

写入 nc_capture 的输出:

我的第一个想法是防火墙有问题,所以我禁用了它,但它仍然会发生。我也试过重置我的winsock和tcp/ip,它仍然发生。我尝试禁用我的所有网络适配器(上述测试适用于环回 IP 地址,因此不需要它们),它仍然会发生。在这一点上,我几乎没有想法,我什至不知道我将如何尝试在较低级别进行调试。有没有人见过这样的东西?Windows 上是否有一些低级别的诊断工具,我可以使用它来查看它可能与我的 TCP 堆栈挂钩的内容?

0 投票
0 回答
229 浏览

windows - Linux 上的 QEMU 可以工作,但在使用 -redir 参数时在 Windows(可能是 7/8)上失败

我正在通过 qemu 静态构建和 Linux VM 交付我的项目。我的项目使用端口 4848 进行服务器配置,端口 8080 用于 HTTP(工具)和临时端口(49152+)用于使用 p2p websockets 的衍生子项目。

请注意,qemu 二进制文件是来自 Linux 的qemu-system-...二进制文件和 Windows 上的 qemu.exe,都是静态编译的。

在 Linux 上,我用这个命令开始一切。正如预期的那样,它就像一个魅力:

在我的 Windows XP VM(在 VirtualBox 中)上,一旦您批准了防火墙弹出窗口,这里的命令就可以正常工作,但它似乎不适用于 Windows 8:

我发现Windows上的NE2000网卡驱动程序可能存在问题,我在这里阅读:http ://www.h7.dion.ne.jp/~qemu-win/HowToNetwork-en.html

当尝试在没有 -redir 内容和标志“-net nic,model=rtl8139 -net user”的情况下直接启动 qemu.exe 时,它​​会正确启动。

但是当我开始在 Windows8 上添加 -redir 标志时,它崩溃了,甚至在 cmd / 终端中没有显示一条消息。

问题

如何在 CMD 中使用 qemu.exe 正确地将 VM 来宾的端口重新分配到 Windows 8 主机?

0 投票
1 回答
69 浏览

winapi - 使用什么 WinAPI 来添加虚拟共享?

关于 Windows 和共享的问题不是指向磁盘文件夹,而是指向 \GlobalName 空间中的设备。一个很好的例子是 SQL Server 为文件流访问创建的共享。它导致 \?\GLOBALROOT\Device\RsFx0153\\SQL2008R2 该共享上显示的所有内容都是虚拟表示:一些文件,一些文件夹,实际上并不存在于 FS 上。他们是怎么做到的呢?

0 投票
1 回答
1808 浏览

c# - Process.start 在网络驱动器上,请求身份验证

考虑到这段代码:

我想连接到共享资源并打开路径Explorer.exe,但是,用户可能尚未通过身份验证。如果用户未通过身份验证,我想打开一个 Windows 身份验证弹出窗口,就像我在运行时看到的那样\\some_network_host\path,但是,我的实际代码只是打开“我的文档”(如果用户尚未通过身份验证)。如果用户已通过身份验证,则会打开 explorer.exe 窗口,显示共享资源。谢谢你。