Articles of networking

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,并从命令行的标准输出窗口返回结果。

如果通过计划任务调用BAT文件,则无法将文件复制到UNC目标

我有一个bat文件将文件从当前机器复制到映射的networking驱动器(一行xcopy命令)。 它适用于我的RDP到服务器。 然而,当我作为一个计划任务运行,并将其configuration为在我login的同一用户下运行,它不起作用,并给出错误0x4。 有什么办法可以做到这一点? 我也尝试dsynchronize,它在我单击同步时工作。 当我运行它作为服务相同的问题。

从GetAdaptersAddresses()获取IP_ADDRESS_STRING?

GetAdaptersAddresses()将以IP_ADAPTER_UNICAST_ADDRESS格式获取地址,其格式如下: typedef struct _IP_ADAPTER_UNICAST_ADDRESS { union { struct { ULONG Length; DWORD Flags; } ; } ; struct _IP_ADAPTER_UNICAST_ADDRESS *Next; SOCKET_ADDRESS Address; IP_PREFIX_ORIGIN PrefixOrigin; IP_SUFFIX_ORIGIN SuffixOrigin; IP_DAD_STATE DadState; ULONG ValidLifetime; ULONG PreferredLifetime; ULONG LeaseLifetime; UINT8 OnLinkPrefixLength; } IP_ADAPTER_UNICAST_ADDRESS, *PIP_ADAPTER_UNICAST_ADDRESS; 似乎build议人类可读IP地址string的唯一字段是Address,它是一个SOCKET_ADDRESS结构,定义如下: typedef struct _SOCKET_ADDRESS { LPSOCKADDR lpSockaddr; INT iSockaddrLength; } SOCKET_ADDRESS, *PSOCKET_ADDRESS; 其中,反过来,使用另一种结构,SOCKADDR,定义为: 对不起,这是复杂的方式张贴在这里,因为它取决于IPv4与IPv6和Windows版本…所以这里是一个链接到定义: http://msdn.microsoft.com/en-us/library/ms740496%28v=VS.85%29.aspx 如果你还没有像我那样头晕目眩,并通过这个定义的迷宫,你可能会注意到,这是一个噩梦来检索一个IP地址的旧的虚线string样式,因为它使用GetAdaptersInfo()更容易, […]

为什么我的客户端套接字不能连接到我的ServerSocket?

在这个非常基本的客户端/服务器套接字程序中,为什么我的客户端套接字从不连接并抛出java.net.ConnectException ? 我在一台计算机上运行MessageServer程序,在同一networking上的另一台笔记本电脑上运行ClientServer程序。 我已经validation,正在运行服务器程序的计算机的本地IP是10.0.0.1在该计算机上的Windows cmd中使用ipconfig命令。 服务器: package server; import java.net.*; import java.io.*; public class MessageServer { public static void main(String args[]) { ServerSocket serverSocket = null; try { serverSocket = new ServerSocket(4302); } catch (Exception e) { System.out.println("well bad news…"); } boolean noConnection = true; while(noConnection == true) { try { Socket client = serverSocket.accept(); […]

Windows上networking接口准备就绪的通知

如何在Windows XP下启动并准备好networking接口时收到通知? 就绪意味着接口已经通过DHCP获得了一个networkingIP地址,并准备使用。