Tag: 网络

C#在XP中获取网络连接状态和速度

如何在Windows XP中获得连接状态和速度?

ACM Stream转换exception显示AcmNotPossible

当从服务器解压缩Mp3的帧时,在Mp3播放10到15秒时发生上述exception。我的应用程序是客户端/服务器应用程序。我通过编写Mp3数据包并通过网络流序列化来发送Mp3帧。我使用NAudio Open Source API来压缩和解压缩帧并播放Mp3.I使用Stack Trace获得以下exception。 NAudio.MmException.Try(MmResult结果,字符串函数) at NAudio.Wave.Compression.AcmStreamHeader.Convert(Int32 bytesToConvert,Int32&sourceBytesConverted) at NAudio.Wave.Compression.AcmStream.Convert(Int32 bytesToConvert,Int32&sourceBytesConverted) 在NAudio.Wave.AcmMp3FrameDecompressor.DecompressFrame(Mp3Frame帧,Byte [] dest,Int32 destOffset) 在Client.Audio.SoundPlayer.StreamMP3(对象状态)

发送/接收的网络丢失

我在这里听到了答案: 计算带宽 并实施了他所说的一切。 我的监视器初始化如下: netSentCounter.CategoryName = “.NET CLR Networking”; netSentCounter.CounterName = “Bytes Sent”; netSentCounter.InstanceName = Misc.GetInstanceName(); netSentCounter.ReadOnly = true; 我可以正确地看到Misc.GetInstanceName()返回“MyProcessName [id]”。 但是,我不断得到实例在指定类别中不存在的exception。 我的理解是,在您实际发送或接收之前,不会创建网络发送/接收的类别。 我按照答案中的说明添加了app.config,如下所示: 为什么我仍然会收到错误? 这是我的监控代码: public static class Monitoring { private static PerformanceCounter netSentCounter = new PerformanceCounter(); //Static constructor static Monitoring() { netSentCounter.CategoryName = “.NET CLR Networking”; netSentCounter.CounterName = “Bytes Sent”; netSentCounter.InstanceName = Misc.GetInstanceName(); […]

如何在同一网络上制作wpf应用程序从一个SQL Server读取数据?

我在我的计算机上运行Visual Studio 2017中的C#WPF应用程序,我使用SQL Server 2014来保存/选择数据。 如何在不安装Visual Studio / SQL Server的情况下在同一网络上的另一台Windows计算机上运行它? 此应用程序应从/在我的SQL Server中读取/插入数据。 我尝试使用发布选项,但该应用程序无法从我的计算机上读取其他网络PC上的数据。 此外,我试图将bin复制到其他PC,但该应用程序仍然无法从SQL Server读取数据。 我已经准备SQL Server以使用以下链接上的以下步骤接收连接: 如何在与LAN连接的其他计算机上使用SQL Server数据库运行桌面应用程序 同样在app.config ,我找到了以下连接字符串: connectionString=”Data Source=DESKTOP-QO2VUSP\SQLEXPRESS;Initial Catalog=AJFactory;Integrated Security=True” 我检查了其他pc的事件处理程序,我发现以下错误: 应用程序:Factory App.exe Framework版本:v4.0.30319描述:由于未处理的exception,进程已终止。 exception信息:System.Data.SqlClient.SqlInternalConnectionTds..ctor中的System.Data.SqlClient.SqlException(System.Data.ProviderBase.DbConnectionPoolIdentity,System.Data.SqlClient.SqlConnectionString,System.Data.SqlClient.SqlCredential,System.Object, System.String,System.Security.SecureString,Boolean,System.Data.SqlClient.SqlConnectionString,System.Data.SqlClient.SessionData,System.Data.ProviderBase.DbConnectionPool,System.String,Boolean,System.Data.SqlClient.SqlAuthenticationProviderManager 以下内容: 错误应用程序名称:Factory App.exe,版本:1.0.0.0,时间戳:0x5bdb0efa错误模块名称:KERNELBASE.dll,版本:10.0.17134.319,时间戳:0x5ea0e53dexception代码:0xe0434352错误偏移量:0x001117d2

套接字编程

好吧,我已经绞尽脑汁,无法找到解决方案。 这里的问题是我能够调用begin-receive一次,但之后我无法找到一种适当的技术,可以一次又一次地调用该方法。 因此,虽然正在建立连接,但消息可以只接收一次,之后不再接收..请帮助,因为它非常紧急。谢谢你。 我在这里放下整个代码。 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Net; using System.Net.Sockets; using System.Runtime.InteropServices; using System.IO; using.System.Threading; namespace WindowsApplication1 { public partial class lanmessenger : Form { Socket client; Socket newSock, server, hostSock, remote; byte[] receiveBuffer = new byte[1024]; byte[] sendBuffer = new byte[1024]; String […]

UDP具有多个发送方和一个单一接收方

在一个项目中,我有多个UDP数据发送者,但只有一个接收者。 如果流量变高,接收方“忘记”大量数据包。 我知道这是UDP固有的问题,但我想减少丢失数据包的数量。 我以前读过这个问题! 这是我的代码(请原谅大量的代码块,但我希望这个例子是自包含的) 发件人方: public class UdpSender { private static int portNumber = 15000; public void Send(string data) { var udpServer = new UdpClient(); var ipEndPoint = new IPEndPoint(IPAddress.Broadcast, portNumber); byte[] bytes = Encoding.ASCII.GetBytes(data); udpServer.Send(bytes, bytes.Length, ipEndPoint); udpServer.Close(); } } class Program { static void Main(string[] args) { var sender = new UdpSender(); […]

如何使用c#计算带宽

我想用c#测量bandwidh。 这就是我做的。 欢迎提出意见和建议。 找到最大udp有效载荷(在我的测试台上,它的1472字节) 创建1472字节大小的不可压缩数据 将此数据从服务器发送到客户端多次(在我的测试中,其5000个数据包) 客户端在第一个数据包到达时启动秒表 发送完所有数据后,向客户端发送通知,说明所有数据都已发送 客户停止秒表 我计算带宽为(总发送数据包(5000)* MTU(1500字节))/时间流逝 我注意到有些数据包丢失了。 最好的,20%的损失。 最坏的是40%的损失。 在计算带宽时我没有考虑到这一点。 我怀疑客户端网络设备遇到缓冲区溢出。 我需要考虑这个因素吗? 如果你们有任何建议或评论,请随时这样做。 谢谢。

网络发现对等网络的应用程序

我希望有两个类,一个服务器类和一个客户端类。 服务器类应该接收每个新客户端的IP地址和端口号,并将它们存储在列表中。 它应该为每个客户端提供已连接客户端及其IP地址的列表。 然后,客户端可以使用TCP连接相互通信。 问题是客户端不知道服务器的IP地址是什么。 然而,整个程序将在局域网上运行。 我的猜测是它需要某种UDP广播,但每次我试图暗示它都不起作用,除非程序的两个实例在同一台计算机上运行。 该应用程序将由具有有限计算知识的客户端安装,因此它应该只是在所有计算机上安装程序并插入网络的情况。 如果有人使用C#.net 3.5或更早版本对此进行可靠,明确的实施,我们将不胜感激。

C#用于重置网络适配器

我正在寻找一些指向C#的地方,只需重置网络设备即可。 我的理由是我的一个工作箱在进入待机状态后停止与我们的Exchange服务器通信,如果我有一个小应用程序只需单击即可重置适配器,那就太棒了。

确定进程正在使用的网络适配器

我在谷歌上看过几个类似的问题,但没有什么能与我想做的完全匹配。 我正在制作一个延迟减少程序(用于游戏),当某个进程打开时,它基本上会降低用户的MTU,并在进程关闭时恢复它。 但是,MTU是特定于网络适配器的设置,并且一些用户具有多个连接的网络适配器。 为此,我认为让程序检测游戏正在使用哪个适配器并且仅更改该适配器上的MTU是很好的。 游戏一次只能使用一个适配器。 我无法在终端服务器IP地址中进行硬编码,因为它们会相当频繁地更改。 似乎必须有一种方法来确定其他进程使用哪个适配器而不知道最终IP地址,但我似乎无法找到它。 编辑 :感谢Cicada和Remco,我已经解决了这个问题。 我使用Remco链接到的ManagedIPHelper类( ManagedIpHelper )和Cicada的评论引导我阅读本文( 识别活动网络接口 ) 将这些与一些(讨厌的,可怕的未经优化的)LINQ相结合,我得到了这个代码片段,它获取进程名称并返回它正在使用的网络接口,如果找不到,则返回null。 private NetworkInterface getAdapterUsedByProcess(string pName) { Process[] candidates = Process.GetProcessesByName(pName); if (candidates.Length == 0) throw new Exception(“Cannot find any running processes with the name ” + pName + “.exe”); IPAddress localAddr = null; using (Process p = candidates[0]) { TcpTable table […]