Tag: networking

从其他程序使用的指定端口获取连接IP

有谁知道如何从另一个程序使用的指定端口连接IP。 在C#中。 谢谢

当服务器和客户端在同一台计算机上时,收听广播

在晚上度过了更好的一部分后,我无法使其发挥作用。 这是我正在做的事情: 这是一个由一个参与者托管并由其他玩家加入的网络游戏。 主持人自己也是一名球员。 用户单击“主机”按钮开始在UDP上做广告。 其他用户可以看到所有可用主机的列表,并选择一个加入。 作为入门者,我下载了NetworkHelper库来研究UWP中的网络工作方式。 该库提供了我分别用于Host和Player类的UDPManager和UDPParticipant类。 该库还包括一个小问答游戏样本。 我的架构和游戏之间唯一的重大变化是我的一个玩家需要充当主机和玩家,而示例游戏可以一次充当主机或玩家。 因此,与它们不同,我需要同时监听两个DatagramSocket对象。 一切正常,除了(grrr ……为什么除了总是在拐角处),主机上运行的客户端无法收听广告消息。 DatagramSocket告诉我,对于相同的网络地址(协议/主机/端口),我不能有多个用法。 如果我为服务器和客户端使用不同的端口(下面是AdvertiserPort和ListenerPort ),则没有exception,但客户端从不接收广告消息。 这是服务器(仅包括相关代码): AdvertiserSocket = new DatagramSocket(); AdvertiserSocket.MessageReceived += MessageToConnectReceivedFromParticipantAsync; await AdvertiserSocket.BindServiceNameAsync(AdvertiserPort); _timer = new Timer(async state => await SendMessageAsync(), null, 0, AdvertiserInterval); 和广告: private async Task SendMessageAsync() { Stream outStream = (await AdvertiserSocket.GetOutputStreamAsync(AdvertiserGroupHost, AdvertiserPort)).AsStreamForWrite(); using (var writer = new StreamWriter(outStream)) […]

Unity如何使用NetworkDiscovery从客户端查找服务器

[我在c#工作] 为了确定天气,设备应该成为仅具有本地客户端或客户端的服务器(对于无主服务器的网络),我需要在转向使用本地客户端的服务器之前找出该设备是否还有其他可用服务器。不是通过从服务器接收NetworkDiscovery广播来加入另一个客户端设备 – 目前我无法让客户端从服务器接收广播。 我创建了两个空的游戏对象,每个都有脚本,一个脚本使它成为一个服务器,应该通过NetworkDiscovery.StartAsServer()从其NetworkDiscovery广播,但目前我的客户端的NetworkDiscovery已经设置为NetworkDiscovery.StartAsClient()没有得到OnRecievedBroadcast()函数被调用因此不接收来自服务器的广播。 下面显示的两个脚本是客户端和服务器: 客户 – using UnityEngine; using System.Collections; using UnityEngine.Networking; public class SearchForServers : MonoBehaviour { bool serverIsFound; NetworkDiscovery NetworkDiscovery; // Use this for initialization void Start () { serverIsFound = false; NetworkClient Client = new NetworkClient(); NetworkDiscovery = gameObject.AddComponent(); NetworkDiscovery.Initialize(); NetworkDiscovery.StartAsClient(); } void OnRecievedBroadcast(string fromAdress, string data) { serverIsFound = […]

.NET TCP协议的可靠性如何?

我对C#很新,所以请耐心等待。 我在C#.NET 4.0中编写了一个相对简单的客户端服务器应用程序。 我使用TCP协议,TCPListener和TCPClient更具体。 我知道TCP协议在理论上是如何工作的。 但我必须100%确定在数据传输过程中不会出现(未处理的)错误。 发送数据后如何知道数据是否已成功接收。 我可以完全依赖TCP协议的底层实现吗? 所以我没有必要从另一方确认数据已收到? 至关重要的是,我真正知道哪些数据已发送并成功接收。 我知道这是一个愚蠢的问题,但我真的很想确定。 谢谢你的时间和答案。

在C#中检测网络状态(已连接 – 已断开连接)

我需要一段代码来检测网络连接是连接还是断开连接。 连接状态意味着电缆已插入以太网连接。 断开状态意味着没有连接电缆。 由于我在Windows CE上运行,我无法使用WMI界面。 我不介意调用Win32 API但请记住我正在使用Windows CE并在Compact Framework上运行。

我在哪里可以找到C#/。NET NFS实现?

是否有用 C#编写的NFS协议的任何实现,或者是一个易于阅读的好文档,所以我可以实现自己的… 服务器和客户端都需要,但客户端不必是C#,那里必须有一些东西?

如何在C#中将IP地址字符串解析为uint值?

我正在编写使用Windows IP Helper API的C#代码。 我试图调用的函数之一是“ GetBestInterface ”,它采用IP的“uint”表示。 我需要的是解析IP的文本表示以创建’uint’表示。 我已经通过谷歌找到了一些例子,比如这个或者这个例子,但我很确定应该有一种标准的方法来实现这一点。 唯一的问题是,我找不到这种标准方式。 IPAddress.Parse似乎是在正确的方向,但它没有提供任何方式获得’uint’表示… 还有一种方法可以使用IP Helper,使用ParseNetworkString ,但同样,我宁愿使用.NET – 我相信我越少依赖pInvoke就越好。 那么,有谁知道在.NET中执行此操作的标准方法?

按子网掩码计算IP范围

如果我有一个子网掩码,例如255.255.255.0和一个IP地址192.168.1.5 ,有没有一种简单的方法来确定该子网内所有可能的IP地址? 在这种情况下: 192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4 … … 192.168.1.252 192.168.1.253 192.168.1.254 192.168.1.255 直到现在我发现的都是重载的.net库。 是否有任何本地方法使用默认命名空间解决此问题?

HttpWebRequest如何处理(过早)关闭底层TCP连接?

在使用.NET的HttpWebRequest类调用远程服务器(特别是REST Web服务)时,我很难搞清楚是否有办法处理潜在的连接问题。 从我的调查来看,WebClient类的行为是相同的,这是有点预期的,因为它似乎只提供了一个更简单的HttpWebRequest接口。 出于模拟目的,我编写了一个非常简单的HTTP服务器,它不符合HTTP 1.1 RFC。 它的作用是接受客户端连接,然后发送适当的HTTP 1.1头和“Hello World!”。 有效负载返回客户端并关闭套接字,服务器端接受客户端连接的线程如下所示: private const string m_defaultResponse = “Hello World!”; private void Listen() { while (true) { using (TcpClient clientConnection = m_listener.AcceptTcpClient()) { NetworkStream stream = clientConnection.GetStream(); StringBuilder httpData = new StringBuilder(“HTTP/1.1 200 OK\r\nServer: ivy\r\nContent-Type: text/html\r\n”); httpData.AppendFormat(“Content-Length: {0}\r\n\r\n”, m_defaultResponse.Length); httpData.AppendFormat(m_defaultResponse); Thread.Sleep(3000); // Sleep to simulate latency stream.Write(Encoding.ASCII.GetBytes(httpData.ToString()), 0, […]

如何检查WP8设备是否使用wifi,移动计划或漫游来加载数据

我计划只加载我的应用程序所需的数据。 这意味着,当通过Wifi加载数据时,我想预取东西。 如果数据是通过移动计划甚至漫游加载的,我想问一下用户。 但是,我只找到了Microsoft.Phone.Net.NetworkInformation.DeviceNetworkInformation,它向我提供了有关可用内容的反馈,而不是实际使用的内容。 NetworkInterface.GetInternetInterface()也可以,但不会给我详细说明它是否正在漫游。 有什么办法吗?