我有一段代码需要使用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) 我想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) 我正在尝试使用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.
我有一个应用程序,我希望在Windows上使用.我正在使用AF_UNIX family un windows.我想知道AF_UNIX系列在Windows中可用.如果没有那么AF_UNIX有替代品吗?
谢谢Arpit
linux windows network-programming linux-kernel windows-networking
我有一个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) 链路本地多播名称解析(LLMNR)是一种基于多播DNS的服务发现的Microsoft技术.它与Bonjour/Zeroconf兼容吗?如果是这样,API在哪里?我认为服务发现以某种方式融入了vanilla DNS解析(gethostbyname()
?),但是服务广告呢?
我们遇到的问题是,当相对较少的节点(16到24,但我们将来需要处理更多)尝试同时连接时,我们的套接字服务器的传入客户端套接字连接被拒绝.
一些细节:
当我们尝试在网格上运行测试时,客户端节点会尝试连接到服务器并发送40-100K数据包然后断开连接.使用16到24个节点,我们开始发现客户端连接无法连接到服务器的问题.鉴于此设置,我们尝试最多可能处理16-24个并发客户端连接并失败,这对我们来说根本不适合.
主服务器循环正在侦听常规SocketServer,当它获得连接时,它会生成一个新的Thread来处理连接,立即返回侦听socket.我们还有一个虚拟的python服务器,只需读取和丢弃传入的数据,以及一个在转储数据之前记录数据的C++服务器,并且两者都遇到同样的问题,客户端无法连接之前有多少成功客户端连接的微小变化失败开始了.这使我们相信任何特定的服务器在这个问题上没有错,而且可能是环境问题.
我们首先想到的是套接字上的TCP积压.即使推到很高的水平,这也没有缓解这个问题.Java SocketServer的默认值为50,远低于我们能够处理的值.
我们在同一子网上的机器之间运行测试,并禁用机器上的所有本地防火墙,以防FW对我们与服务器的连接进行速率限制; 没有成功.
我们尝试在运行服务器的Windows机器上调整网络:
我的感觉是,Windows在某种程度上限制了入站连接的数量,但我们不确定要修改哪些内容以允许更多的连接.网络上代理限制连接速率的想法似乎也不正确.我们高度怀疑同时连接的数量是否会使物理GB网络过载.
我们很难过.有没有其他人遇到这样的问题,并找到了解决方案?
我知道我可以使用netsh advfirewall firewall add rule
或wf.msc
创建新的防火墙规则;但是当我以这种方式创建规则时,它不会有groupName,因此我无法同时管理多个规则。
有没有办法为某些防火墙规则指定groupName?
几周前,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) 首先要明确的是,我的 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) 我正在编写一个连接到SQL服务器的数据库应用程序.我想实现类似于SQL Management Studio中的连接对话框.我已经找到了获取服务器上数据库列表的方法,但我真的想获得网络上可用服务器的列表,这样最终用户就不必输入服务器的名称/ IP .
为什么下面的代码没有抛出"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 …
在Windows的C API中,如何获取网络接口名称列表?(相当于getifaddrs()
Linux)
该WSAIoctl(sock, SIO_GET_INTERFACE_LIST_EX, ...)
函数似乎只返回IP地址,加上一些元数据.
windows ×4
c# ×2
java ×2
sockets ×2
.net ×1
bonjour ×1
c ×1
c++ ×1
docker ×1
dockerfile ×1
file-io ×1
linux ×1
linux-kernel ×1
mdns ×1
multicast ×1
netsh ×1
networking ×1
socketserver ×1
sql-server ×1
udpclient ×1
vmware ×1
windows-subsystem-for-linux ×1
winsock2 ×1
wsl-2 ×1
zeroconf ×1