Articles of networking

模拟networking驱动器(使用Loopback适配器?)

我想模拟一个networking驱动器。 看来最简单的方法是使用Microsoft Loopback Adapter,但是我在网上find的所有说明如何安装,都是指Windows 10中不存在的选项。它在Windows 10中不可用,或者如何安装它? 如果它不可用 – 如何模拟networking驱动器? 不知何故使一个文件夹识别为驱动器? 使外部硬盘驱动器的行为? 别的东西? (路由器没有USB端口,所以我不能使用。) 如果有一些软件仿真用于testing应用程序,那很好。 我正在使用C#。 也许在Visual Studio的东西?

Vista的UAC – 麻烦映射networking驱动器

我们有一个编程映射networking驱动器的应用程序。 在UAC上的Vista上,我们遇到了一些奇怪的问题。 我们的应用程序映射驱动器不boost,所以如果用户浏览器和双击运行一个EXE,它会提示inputUAC。 所以当他们批准它时,它会提示input共享的用户名/密码…奇怪,因为凭证被保存。 事实certificate,升级的进程无法访问从未升级的进程映射的映射驱动器。 要查看此问题,请执行以下步骤: 运行没有UAC的cmd.exe 运行“net use w:\ yourHostname \ yourShare / user:yourUser yourPassword / persistent:yes” 以pipe理员身份运行cmd.exe 键入“w:”,并查看错误消息 在这一点上,你可以运行普通的“networking使用”,看到提升cmd上的连接是不可用的,但其他非提升cmd认为它是好的。 有谁知道一个解决方法来解决这个问题? 或者可能是一种将networking驱动器映射到“所有用户”的方法?

如何从Microsoft-Windows-NDIS-PacketCapture提供程序使用实时ETW事件?

更大的问题是如何使用实时ETWnetworking堆栈事件,但我对Microsoft-Windows-NDIS-PacketCapture提供者特别感兴趣。 所有其他networking堆栈提供程序部分工作,但NDIS-PacketCapture(NDIS-PC)根本不工作,所以这可能是我可以问的最简单的问题。 我使用下面的代码作为基础,修改很less,它实时工作: http : //msdn.microsoft.com/en-us/library/windows/desktop/ee441325(v=vs.85)的.aspx 我所做的更改是: 在做任何事情之前,调用StartTrace启动NDIS-PC会话。 在属性struct EVENT_TRACE_PROPERTIES中,设置LogFileMode = EVENT_TRACE_REAL_TIME_MODE,LogFileNameOffset = 0,Wnode.Guid =我制作的随机GUID。 调用状态= EnableTraceEx2(hSession,&Current_Guid,EVENT_CONTROL_CODE_ENABLE_PROVIDER,TRACE_LEVEL_VERBOSE,0,0,0,NULL); 其中hSession是使用StartTrace和Current_Guid开始的会话 {0x2ED6006E,0x4729,0x4609,{0xB4,0x23,0x3E,0xE7,0xBC,0xD6,0x78,0xEF}}; 然后用LoggerName =一些宽string调用OpenTrace,LogFileName = NULL,LogFileMode = EVENT_TRACE_REAL_TIME_MODE; 最后在上面刚刚打开的跟踪句柄上调用ProcessTrace。 同样,将所有其他内容与MSDN示例中提供的相同 使用相同的代码与提供程序的单个更改,如微软Windows Winsock AFD或微软Windows TCPIP 让我调用我定义的loggingcallback(但是,我仍然无法检索属性,但我不会进一步深入,但要保持这个概率尽可能简单)。 当我使用NDIS-PC时,我得到0callback。 我已经尝试使用ControlTrace手动刷新没有任何成功。 我也试着定义“EventCallback”,而不是“EventRecordCallback”,没有成功。 我查看了这个过程中涉及到的所有数据结构,并在每个提供者之间进行了比较,他们看起来都是正确的。 我查看了函数和返回数据结构的所有返回值,而且他们在我尝试的提供者之间看起来也是一样的。 我已经通过调用“logman”My Trace Session 04“-ets”来查看会话属性,它对于NDIS-PC和TCPIP看起来是相同的: C:\ windows \ system32> logman“我的跟踪会话04”-ets 名称:我的跟踪会议04状态: 运行根path:%systemdrive%\ PerfLogs \ Admin Segment: closures时间表:开 名称:我的跟踪会话04 \我的跟踪会话04types: […]

“服务器无法通过HTTP发送HTTP标头之后设置状态”而不是https

我最近将一个.net Web服务从Windows Server 2003迁移到Windows Server 2008 R2。 当试图访问Web服务帮助页面时,浏览器将等待服务器请求,但什么也没有发生。 请求只是挂起,我永远不会得到一个超时或任何其他状态代码。 当检查服务器上的HTTPERR日志时,我看到请求被取消,没有状态码。 (见下文) 2015-06-02 15:20:49 11.127.2.128 50755 11.113.4.14 56272 HTTP/1.1 GET /HumanResourceServices/1_0_0/help/ – 2 Request_Cancelled HumanResourceServices 我审查了这个问题HTTPERR日志:Request_Cancelled(同时解决WCF服务) ,并做了build议的日志logging。 生成的svc日志文件,但它保持在0字节大小,永远不会改变。 我检查了在IIS中的工作进程,它得到了一个网站的请求,但我没有看到请求,当我去“查看当前请求”。 看起来像我的请求永远不会得到处理,取消和服务器永远不会回应状态码。 为了使事情更有趣,如果我通过https访问同一网站,它的工作原理! 所以这只是当我尝试通过HTTP访问时发生。 任何意见或build议,进一步解决这个问题是非常感谢。 更新 – 我能够让日志工作。 由于应用程序抛出exception,请求被取消。 错误消息是“服务器在发送HTTP标头之后无法设置状态”。 有没有人有任何想法,为什么我会通过http得到这个错误,但不是通过https? 另外请注意,这只发生在新的Windows 2008 R2服务器上。 我们的旧服务器Windows Server 2003(IIS 6.0)没有这个问题。 谢谢

FileExists超时

可能重复: 更快的DirectoryExistsfunction? 我想检查networking驱动器上是否存在某个文件。 但如果驱动器断开连接,则FileExists速度太慢。 我怎样才能检查一下超时? 欢迎举例。

TCP打孔

我正在尝试使用mingw toolchain来实现使用Windows套接字的TCP打孔function。 我认为这个过程是正确的,但是这个洞似乎并不需要。 我用这个作为参考。 A和B连接到服务器S S发送到A , B的路由器IP +它用于连接到S的端口 S对B也是一样的 一开始2个线程: 一个线程尝试用S发送的信息连接到B的路由器 另一个线程正在等待连接到S时连接到路由器的同一个端口上的传入连接 B也是这样 自从我认为我在代码中没有问题: A和B确实得到彼此的IP和端口使用 当他们联系服务器时,他们都在监听他们用来连接路由器的端口 他们都连接到正确的IP和端口,但超时(代码错误10060 ) 我错过了什么? 编辑:在进程资源pipe理器的帮助下,我看到一个客户端设法build立到对等的连接。 但同行似乎并没有考虑要build立联系。 这是我用Wireshark捕获的。 为了举例,服务器S和客户端A在同一台PC上。 服务器S侦听redirect到该PC的特定端口( 8060 )。 B仍然尝试连接正确的IP,因为它看到由S发送的A的公共地址是localhost ,因此使用S的公共IP。 (我用占位符replace了公有IP地址) 编辑2 :我认为混乱是由于传入和传出连接请求数据传输在同一端口的事实。 这似乎弄乱了连接状态,因为我们不知道哪个套接字将从端口获取数据。 如果我引用msdn: SO_REUSEADDR套接字选项允许套接字强制绑定到另一个套接字使用的端口。 第二个套接字调用setsockopt,将optname参数设置为SO_REUSEADDR ,将optval参数设置为布尔值TRUE然后调用与原始套接字相同的端口上的绑定。 一旦第二个套接字成功绑定,绑定到该端口的所有套接字的行为是不确定的。 但是使用TCP Hole Punching技术来打开同一个端口是需要的!

File.Copy()从networking共享到另一个共享在同一台机器上通过networking复制文件?

如果我的.NET客户端使用System.IO.File.Copy将文件从\ server1 \ share1 \ file1.txt复制到\ sever1 \ share2 \ file2.txt ,文件的数据会被读取到客户端,然后写回到服务器? 如果是的话,有什么办法的.NET客户端可以将服务器上的文件复制到同一台服务器上的另一个位置,而不会绕过文件? 如果目的地份额与源份额相同,是否有所作为?

通过networking共享locking行为是不同的

我一直在试图locking一个文件,以便其他克隆的服务不能访问该文件。 然后我读取文件,然后完成后移动文件。 移动是通过使用FileShare.Delete允许的。 但是在后来的testing中,我们发现如果我们正在查看networking共享,这种方法是行不通的。 我赞赏我的做法可能不是最好的,但我的具体问题是: 为什么下面的演示针对本地文件,而不是针对networking文件? 更具体的你可以是更好的,因为我发现我的search很less的信息,表明networking共享行为不同于本地磁盘。 string sourceFile = @"C:\TestFile.txt"; string localPath = @"C:\MyLocalFolder\TestFile.txt"; string networkPath = @"\\MyMachine\MyNetworkFolder\TestFile.txt"; File.WriteAllText(sourceFile, "Test data"); if (!File.Exists(localPath)) File.Copy(sourceFile, localPath); foreach (string path in new string[] { localPath, networkPath }) { using (FileStream fsLock = File.Open(path, FileMode.Open, FileAccess.ReadWrite, (FileShare.Read | FileShare.Delete))) { string target = path + ".out"; File.Move(path, […]

路由来自特定应用程序的stream量

有没有一种方法可以将stream量从一个应用程序路由到一个不同的IP,比方说,例如路由Firefox的stream量到本地主机,例如? 我正在使用Windows。

是否有可能在C#中编写一个可在Windows 8 Metro环境中运行的Ping类?

由于Windows 8上的Metro环境缺乏大部分.NET框架类库或者包含一个经济实惠的版本,是否可以从Metro风格的应用程序执行“ping”? 有支持套接字,所以我想有希望,但我不知道从哪里开始,因为每个“C#Ping”的例子使用System.Net.NetworkInformation.Ping ,并不是在WinRT中可用。 我也研究了Mono的源代码,他们的ping实现激发了ping.exe,并从命令行的标准输出窗口返回结果。