标签: windows-networking

为什么.NET的File.Open使用UNC路径进行过多的SMB调用?

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

C++代码进行此调用:

FILE *f = _wfsopen(fileName, L"r", _SH_DENYWR);
Run Code Online (Sandbox Code Playgroud)

这导致以下SMB请求序列:

NT Create AndX Request, FID: 0x0004, Path: \\a\\i\\a\\q\\~141106162638847.nmd
NT Create AndX Response, FID: 0x0004
Trans2 Request, QUERY_FILE_INFO, FID: 0x0004, Query File Basic Info
Trans2 Response, FID: 0x0004, QUERY_FILE_INFO
Read AndX Request, FID: 0x0004, 1327 bytes at offset 0
Read AndX Response, FID: 0x0004, 1327 bytes
Close Request, FID: 0x0004
Close Response, FID: 0x0004
NT Create AndX Request, FID: 0x0005, Path: \\a\\i\\a\\q\\~141106162638847.nmd
NT Create AndX Response, FID: 0x0005
Run Code Online (Sandbox Code Playgroud)

C#代码进行此调用:

FileStream f = …
Run Code Online (Sandbox Code Playgroud)

.net c# c++ file-io windows-networking

35
推荐指数
2
解决办法
2590
查看次数

无法从另一个vmware guest虚拟机ping vmware guest

我想ping另一个vmware客户端.两者都是Windows XP并使用NAT.我为VMnet8手动设置IP为192.168.18.1.(不使用自动获取IP地址).此外,我无法从主机ping guest1和guest2.

我正在使用VMWare Player 5.

主机(Windows 7):

    Ethernet adapter VMware Network Adapter VMnet8:

    Connection-specific DNS Suffix  . :
    Link-local IPv6 Address . . . . . : fe80::dc81:34e2:779d:595d%19
    IPv4 Address. . . . . . . . . . . : 192.168.18.1
    Subnet Mask . . . . . . . . . . . : 255.255.255.0
    Default Gateway . . . . . . . . . :
Run Code Online (Sandbox Code Playgroud)

嘉宾1:

    Connection-specific DNS Suffix  . : localdomain
    IP Address. . …
Run Code Online (Sandbox Code Playgroud)

vmware virtual-machine windows-networking

31
推荐指数
2
解决办法
18万
查看次数

NETSH端口从本地端口转发到本地端口不起作用

我正在尝试使用NETSH PORTPROXY命令将发送到192.168.0.10端口8001上的XP PC(IP )的数据包转发到端口80(我是一个侦听端口80的XAMPP Apache服务器).

我发布了以下内容:

netsh interface portproxy add v4tov4 listenport=8001 listenaddress=192.168.0.10 connectport=80 connectaddress=192.168.0.10
Run Code Online (Sandbox Code Playgroud)

显示全部确认所有内容都已正确配置:

netsh interface portproxy show all

Listen on IPv4:             Connect to IPv4:

Address         Port        Address         Port
--------------- ----------  --------------- ----------
192.168.0.10    8001        192.168.0.10    80
Run Code Online (Sandbox Code Playgroud)

但是,我无法访问apache网站http://localhost:8001.我可以通过直接端口访问http://localhost,如下所示.

此外,我还尝试了以下方法:1 http://192.168.0.10:8001.使用以下链接从远程PC访问Apache网站:.防火墙已关闭.2.将listenaddress和connectaddress更改为127.0.0.1.

没有进一步的信息,我找不到解决问题的方法.有没有办法调试NETSH PORTPROXY?

在此输入图像描述

注意:顺便说一下,如果你想知道为什么我这样做,我实际上想要将远程MySQL客户端连接从自定义端口映射到默认的MySQL服务器端口3306.

portforwarding netsh windows-networking

22
推荐指数
3
解决办法
8万
查看次数

Windows中的AF_UNIX

我有一个应用程序,我希望在Windows上使用.我正在使用AF_UNIX family un windows.我想知道AF_UNIX系列在Windows中可用.如果没有那么AF_UNIX有替代品吗?

谢谢Arpit

linux windows network-programming linux-kernel windows-networking

13
推荐指数
2
解决办法
6823
查看次数

C#UDP客户端读取组播IP(本地接口),并向VPN发送单播UDP

我有一个VPN客户端,可以通过VPN管道发送单播UDP数据包,但不支持多播IP(UDP)数据包(OpenVPN).所以我想我可以编写这个带有IP(端口3000)多播的小垫片,并通过VPN作为单播发送它们.

我看到组播数据包到了,但我看不到任何东西到达VPN端(WireShark没有帮助,因为不像IpConfig/all)它没有看到VPN接口.).

我认为我的问题可能是我不清楚BIND和CONNECT之间的区别,以及我应该将UDPClient绑定到哪个接口(vpn或local).

命令行是:

239.0.0.0 198.168.0.15 10.4.30.239 172.27.225.77
arg[0] = multicast from address
arg[1] = unicast to address
arg[2] = local physical ethernet assigned address
arg[3] = virtual address of computer on VPN network (client)
Run Code Online (Sandbox Code Playgroud)
using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Sockets;
using System.Threading.Tasks;

namespace MUTunnel
{
    public class EchoBot
    {
        protected UdpClient sender;
        protected UdpClient listener;

        protected const int listenPort = 3000;
        protected const int outPort = 3000;

        protected IPEndPoint inPoint;
        protected IPEndPoint outPoint;
        protected IPAddress listenAddress;
        protected …
Run Code Online (Sandbox Code Playgroud)

c# multicast udpclient windows-networking

9
推荐指数
1
解决办法
790
查看次数

Windows上的LLMNR与Zeroconf vs. Bonjour

链路本地多播名称解析(LLMNR)是一种基于多播DNS的服务发现的Microsoft技术.它与Bonjour/Zeroconf兼容吗?如果是这样,API在哪里?我认为服务发现以某种方式融入了vanilla DNS解析(gethostbyname()?),但是服务广告呢?

windows mdns bonjour zeroconf windows-networking

8
推荐指数
2
解决办法
2644
查看次数

客户端套接字连接被Windows主机上的服务器拒绝为小数(16 <x <24)的同时客户端连接尝试

我们遇到的问题是,当相对较少的节点(16到24,但我们将来需要处理更多)尝试同时连接时,我们的套接字服务器的传入客户端套接字连接被拒绝.

一些细节:

  • 服务器正在Windows 2008或7上运行
  • 我们的主服务器是使用ServerSocket用Java编写的
  • 客户端也是在我们数据中心的网格节点上运行的Windows

当我们尝试在网格上运行测试时,客户端节点会尝试连接到服务器并发送40-100K数据包然后断开连接.使用16到24个节点,我们开始发现客户端连接无法连接到服务器的问题.鉴于此设置,我们尝试最多可能处理16-24个并发客户端连接并失败,这对我们来说根本不适合.

主服务器循环正在侦听常规SocketServer,当它获得连接时,它会生成一个新的Thread来处理连接,立即返回侦听socket.我们还有一个虚拟的python服务器,只需读取和丢弃传入的数据,以及一个在转储数据之前记录数据的C++服务器,并且两者都遇到同样的问题,客户端无法连接之前有多少成功客户端连接的微小变化失败开始了.这使我们相信任何特定的服务器在这个问题上没有错,而且可能是环境问题.

我们首先想到的是套接字上的TCP积压.即使推到很高的水平,这也没有缓解这个问题.Java SocketServer的默认值为50,远低于我们能够处理的值.

我们在同一子网上的机器之间运行测试,并禁用机器上的所有本地防火墙,以防FW对我们与服务器的连接进行速率限制; 没有成功.

我们尝试在运行服务器的Windows机器上调整网络:

  • 减少TimedWaitDelay,但没有效果(在我的Python测试中它不应该因为该测试只运行几毫秒).
  • 将MaxUserPort增加到一个大值,大约65000,但没有效果(这是奇怪的,因为我的Python测试只发送240条消息,所以我甚至不应该接近这种类型的限制).
  • 将TcpNumConnection增加到一个较大的值(不记得确切的数字).同样,我们一次不应该有超过24个连接,所以这不是一个限制.
  • 启动"动态积压"功能,允许消息积压动态增加.我认为我们将最大值设置为2000连接,最小1000个连接,但没有效果.同样,Python永远不应该超过240个连接,所以我们不应该甚至激活动态积压.
  • 除了以上禁用TCP端口的Windows"自动调整".再一次,没有效果.

我的感觉是,Windows在某种程度上限制了入站连接的数量,但我们不确定要修改哪些内容以允许更多的连接.网络上代理限制连接速率的想法似乎也不正确.我们高度怀疑同时连接的数量是否会使物理GB网络过载.

我们很难过.有没有其他人遇到这样的问题,并找到了解决方案?

java sockets windows socketserver windows-networking

7
推荐指数
1
解决办法
1319
查看次数

如何使用自定义组名添加 Windows 防火墙规则?

我知道我可以使用netsh advfirewall firewall add rulewf.msc创建新的防火墙规则;但是当我以这种方式创建规则时,它不会有groupName,因此我无法同时管理多个规则。

有没有办法为某些防火墙规则指定groupName

windows-firewall windows-networking

6
推荐指数
2
解决办法
9279
查看次数

WSL2 网络不可达

几周前,WSL 突然无法访问任何 IP 地址,也无法解析任何域。甚至无法访问内部网络 IP。

>lsb_release -a
Distributor ID: Ubuntu
Description:    Ubuntu 20.04.1 LTS
Release:        20.04
Codename:       focal

? neofetch
            .-/+oossssoo+/-.               klewis@NOTEBOOK-KLEWIS
        `:+ssssssssssssssssss+:`           ----------------------
      -+ssssssssssssssssssyyssss+-         OS: Ubuntu 20.04.1 LTS on Windows 10 x86_64
    .ossssssssssssssssssdMMMNysssso.       Kernel: 5.4.72-microsoft-standard-WSL2
   /ssssssssssshdmmNNmmyNMMMMhssssss/      Uptime: 1 hour, 20 mins
  +ssssssssshmydMMMMMMMNddddyssssssss+     Packages: 1405 (dpkg)
 /sssssssshNMMMyhhyyyyhmNMMMNhssssssss/    Shell: zsh 5.8
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   Theme: Adwaita [GTK3]
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   Icons: Adwaita [GTK3]
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   Terminal: Windows Terminal
ossyNMMMNyMMhsssssssssssssshmmmhssssssso   CPU: Intel i7-7820HK (8) @ 2.903GHz
+sssshhhyNMMNyssssssssssssyNMMMysssssss+   Memory: 968MiB / 5942MiB
.ssssssssdMMMNhsssssssssshNMMMdssssssss.   Font: Cantarell 11 [GTK3]
 /sssssssshNMMMyhhyyyyhdNMMMNhssssssss/ …
Run Code Online (Sandbox Code Playgroud)

windows-networking windows-subsystem-for-linux wsl-2

6
推荐指数
5
解决办法
6576
查看次数

Windows Docker 容器没有 NAT IP 地址。无法本地访问容器

首先要明确的是,我的 docker 容器的 IP 地址位于NetworkSettings.Networks.bridge. 该IP是172.17.0.2

http://172.17.0.2:3000/但是,运行容器后我无法通过以下方式访问容器:docker run -p 3000:3000 node:8.10.0

我的研究表明它在 Windows 上本地与 docker 的工作很粗糙。按照这个简短的指南:https://blog.sixeyed.com/published-ports-on-windows-containers-dont-do-loopback/

我遇到过使用网络 NAT IP 地址的情况。我看到这个推荐了几个地方。但我的那部分docker inspect根本不存在。它返回:

 "NetworkSettings": {                                                                            
 "Bridge": "",                                                                               
 "SandboxID": "0c81d8f7ce5bcba70ec0487bbfe91bc6f221e29d9378c33708fac78d0ae47d3e",            
 "HairpinMode": false,                                                                       
 "LinkLocalIPv6Address": "",                                                                 
 "LinkLocalIPv6PrefixLen": 0,                                                                
 "Ports": {                                                                                  
     "3000/tcp": [                                                                           
         {                                                                                   
             "HostIp": "0.0.0.0",                                                            
             "HostPort": "3000"                                                              
         }                                                                                   
     ]                                                                                       
 },                                                                                          
 "SandboxKey": "/var/run/docker/netns/0c81d8f7ce5b",                                         
 "SecondaryIPAddresses": null,                                                               
 "SecondaryIPv6Addresses": null,                                                             
 "EndpointID": "bbe5f42a5b53c001bd3c2852bc6b22976fb9bab2afcb88b30f6660d7662f526f",           
 "Gateway": "172.17.0.1",                                                                    
 "GlobalIPv6Address": "",                                                                    
 "GlobalIPv6PrefixLen": 0,                                                                   
 "IPAddress": "172.17.0.2",                                                                  
 "IPPrefixLen": 16,                                                                          
 "IPv6Gateway": "",                                                                          
 "MacAddress": "02:42:ac:11:00:02",                                                          
 "Networks": {                                                                               
     "bridge": {                                                                             
         "IPAMConfig": …
Run Code Online (Sandbox Code Playgroud)

windows-networking docker dockerfile

5
推荐指数
1
解决办法
1160
查看次数

浏览SQL Server

我正在编写一个连接到SQL服务器的数据库应用程序.我想实现类似于SQL Management Studio中的连接对话框.我已经找到了获取服务器上数据库列表的方法,但我真的想获得网络上可用服务器的列表,这样最终用户就不必输入服务器的名称/ IP .

sql-server windows-networking

2
推荐指数
1
解决办法
300
查看次数

多次绑定到同一个端口?

为什么下面的代码没有抛出"java.net.BindException:Address in in use:JVM_Bind"异常?

import java.net.InetSocketAddress;
import java.net.ServerSocket;

public class Test
{
    public static void main(String[] args) throws Exception
    {
        try (ServerSocket socket1 = new ServerSocket();
             ServerSocket socket2 = new ServerSocket();
             ServerSocket socket3 = new ServerSocket())
        {
            int port = 10000;

            socket1.setReuseAddress(false);
            socket1.bind(new InetSocketAddress("0.0.0.0", port));

            socket2.setReuseAddress(false);
            socket2.bind(new InetSocketAddress("127.0.0.1", port));

            socket3.setReuseAddress(false);
            socket3.bind(new InetSocketAddress("127.0.0.2", port));

            Thread.sleep(Long.MAX_VALUE);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

之后运行'netstat'显示:

C:\Users\Administrator>netstat -a -n | findstr 10000
  TCP    0.0.0.0:10000          0.0.0.0:0              LISTENING
  TCP    127.0.0.1:10000        0.0.0.0:0              LISTENING
  TCP    127.0.0.2:10000        0.0.0.0:0              LISTENING
  TCP    [::]:10000             [::]:0 …

java sockets windows networking windows-networking

2
推荐指数
1
解决办法
3136
查看次数

使用C和Winsock的网络接口名称列表?

在Windows的C API中,如何获取网络接口名称列表?(相当于getifaddrs()Linux)

WSAIoctl(sock, SIO_GET_INTERFACE_LIST_EX, ...)函数似乎只返回IP地址,加上一些元数据.

c winsock2 windows-networking

2
推荐指数
1
解决办法
2147
查看次数