Tag: 网络

开发客户端 – 服务器iphone应用程序

如果我想开发一个带有客户端 – 服务器设计的iPhone应用程序(iPhone设备作为客户端和ac#server),有两个问题: 是否可以使用我自己的笔记本电脑运行服务器? 如果没有,我的选择是什么? 我是否必须开发自己的传输消息协议? 因此,如果我理解正确的,从客户端向服务器发送诸如“创建新用户”之类的消息的过程如下:1。客户端将创建包含命令“CREATE NEW USER”和新用户详细信息的JSON / XML 。 2.客户端将通过HTTP请求(作为HTTP请求的主体)发送此JSON / XML,其URL映射到服务器端的ac#方法。 3.这将在服务器上触发相应的方法,并在数据库上创建新用户。 4.服务器将创建包含重播“CREATED”的JSON / XML,并将通过HTTP响应(作为HTTP响应的主体)将其发送到客户端。 那是对的吗?

CryptoStream不像预期的那样刷新

我正在研究的C#.NET Framework 4.5代码允许我将文本通过加密流传输到另一个程序。 我创建了两个简单的程序来演示我的问题。 EncryptionTestA是服务器,意味着首先运行。 EncryptionTestB是客户端,意味着运行第二。 一旦EncryptionTestB连接,它将文本“hello world”传递给另一个程序,方法是将其传递给CryptoStream。 至少在理论上。 实际发生的事情都没有。 我通过在内部接口上观察与Wireshark的数据传输来确认这一点。 此代码完全不传输其当前forms的数据。 我能够让它发送“hello world”的唯一方法是关闭客户端的StreamWriter。 这个问题是它还关闭了底层的TCP连接,我不想这样做。 所以,我的问题是:如何在不关闭底层TCP连接的情况下刷新StreamWriter / CryptoStream? using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.IO; using System.Collections; using System.Threading; using System.Security; using System.Security.Cryptography; using System.Net; using System.Net.Sockets; namespace EncryptionTestA { class Program { static void Main(string[] args) { TcpListener listener […]

在C#中使用任意位位置和长度提取字节边界的值

我目前正在研究一种网络工具,它需要对特定协议进行解码/编码,该协议将字段打包到任意位置的密集位数组中。 例如,协议的一部分使用3个字节来表示许多不同的字段: Bit Position(s) Length (In Bits) Type 0 1 bool 1-5 5 int 6-13 8 int 14-22 9 uint 23 1 bool 如您所见,有几个字段跨越多个字节。 许多(大多数)也比可能用于表示它们的内置类型短,例如第一个只有5位长的int字段。 在这些情况下,目标类型的最高有效位(例如Int32或Int16)应填充为0以弥补差异。 我的问题是我很难处理这类数据。 具体来说,我很难弄清楚如何有效地获取任意长度的位数组,用源缓冲区中的相应位填充它们,填充它们以匹配目标类型,并将填充的位数组转换为目标类型。 在理想的世界中,我将能够获取上面示例中的byte [3]并调用GetInt32(byte[] bytes, int startBit, int length) 。 我发现的最接近的东西是BitStream类,但它似乎希望单个值在字节/字边界上排列(并且类的半流/半索引访问约定使它变得有点混乱)。 我自己的第一次尝试是使用BitArray类,但事实certificate这有点笨拙。 很容易将缓冲区中的所有位填充到一个大的BitArray ,只将你想要的那些从源BitArray转移到一个新的临时BitArray ,然后将其转换为目标值…但它似乎是错误的,而且非常耗时的。 我现在正在考虑一个类如下的类,它引用(或创建)源/目标byte []缓冲区以及偏移量,并为某些目标类型提供get和set方法。 棘手的部分是获取/设置值可能跨越多个字节。 class BitField { private readonly byte[] _bytes; private readonly int _offset; […]

单声道兼容网络/套接字库

那里有没有Mono(C#)兼容的网络/套接字库吗? 最好是: 多螺纹 事件驱动 能够连接多个 处理客户端和服务器件 运行Mono和MS .NET运行时 非常简单 免费(可在商业软件中使用) 如果它是:它真的很棒: .NET Compact Framework(Windows Mobile)兼容 MonoTouch(iPhone)兼容 编辑: 为了澄清更多,我的“高于TCP / IP的一级”评论意味着我想要的东西基本上是一个自包含的服务器/客户端。 我不想处理编写线程代码,处理每个连接等等。例如,我希望代码看起来像这样: Server s = new Server(8080); s.NewConnection += new ConnectionEventHandler(NewConnection); s.DataRecieved += new DataEventHandler(NewData); s.Start(); void NewConnection(object sender, EventArgs e) { s.Send((Connection)sender, “Hello World!”); //(Connection)sender is the connection instance so the server knows which to […]

在C#中通过网络发送大文件的好方法?

我正在尝试构建一个可以从网络中另一台机器上运行的服务请求文件的应用程序。 这些文件可能相当大(有时500mb +)。 我正在考虑通过TCP发送它,但我担心它可能需要将整个文件存储在内存中。 可能只有一个客户。 也不接受复制到共享目录。 唯一需要的通信是客户端说“gimme xyz”和发送它的服务器(以及确保正确发生这种情况所需的一切)。 有什么建议?

如何监听多个IP地址?

如果我的服务器分配了多个IP地址,并且我想听一些(或全部)它们,我该怎么做呢? 我是否需要为每个IP地址创建一个新套接字并绑定它? 我可以将多个IP地址绑定到一个套接字吗? IPAddress.Any会监听所有IP地址吗? MSDN库在这个问题上非常不清楚。

获取当前网络连接的属性

如何确定或检查当前网络连接的连接配置文件(如果有)? 具体来说,我需要确定当前连接是否是私有网络或公共网络,并从那里确定网络发现是打开还是关闭。 看起来这些信息可以通过Windows.Networking.Connectivity.NetworkInformation.GetConnectionProfiles()或NetworkInformation.GetInternetConnectionProfile()函数在Windowsapp store应用中随时可用, 但这是一个必须在Win 7和Server 2008上运行的标准桌面应用以及Win 8和Server 2012。 枚举计算机上的NIC不是问题,但这并不能解决我的问题 – 我需要获取连接的属性,而不是物理设备 。 是否有一种内置的方式来实现.Net框架? 或者可以用WMI完成吗? 或者作为一种粗略的替代方案,可以通过调用netsh命令来完成(虽然这似乎取决于要运行的dot3svc和/或wlansvc服务)?

使用C#阻止Windows 7的Internet连接

有没有办法通过在C#中编写代码来阻止对我的PC的Internet访问? 我正在使用Windows 7,一种控制防火墙的方法也会有所帮助。 我见过Windows XP和Windows Vista的解决方案,但我找不到’7’的解决方案。

在给定服务器的IP地址的情况下,如何使用C#测试与服务器的连接?

如何以编程方式确定是否可以使用C#访问具有给定IP地址的服务器?

是否有低级网络库来嗅探和更改网络流量?

我正在寻找一种方法来嗅探网络数据包并使用C#对其进行编码(总结:改变网络流量)。 我不知道如何解释我的请求,但我需要像“键盘钩”这样的东西。 .net或Windows API中是否有任何库或软件?