小编Soo*_*nts的帖子

如何绑定到任何可用的端口?

我需要一个应用程序,它将UDP数据包发送到某个网络服务器并接收响应.服务器回复请求来自的相同端口号,因此我首先需要将我的套接字绑定到任何UDP端口号.

对UDP端口号进行硬编码是一个坏主意,因为它可能被运行在同一台PC上的任何其他应用程序使用.

有没有办法将UDP套接字绑定到任何可用的端口?IMO应该是快速获得自由端口#的有效方法,它由例如accept()函数使用.

如果不是,那么尝试绑定并检查WSAEADDRINUSE/EADDRINUSE状态的最佳策略是什么:从1025或1025 + rand()或其他一些顺序尝试端口?

sockets networking

45
推荐指数
2
解决办法
6万
查看次数

异步CTP和"终于"

这是代码:

static class AsyncFinally
{
    static async Task<int> Func( int n )
    {
        try
        {
            Console.WriteLine( "    Func: Begin #{0}", n );
            await TaskEx.Delay( 100 );
            Console.WriteLine( "    Func: End #{0}", n );
            return 0;
        }
        finally
        {
            Console.WriteLine( "    Func: Finally #{0}", n );
        }
    }

    static async Task Consumer()
    {
        for ( int i = 1; i <= 2; i++ )
        {
            Console.WriteLine( "Consumer: before await #{0}", i );
            int u = await Func( i );
            Console.WriteLine( "Consumer: …
Run Code Online (Sandbox Code Playgroud)

.net c# c#-4.0 async-ctp

18
推荐指数
1
解决办法
2330
查看次数

用于C#应用程序的AnyCPU/x86/x64及其C++/CLI依赖性

我是Windows开发人员,我正在使用Microsoft visual studio 2008 SP1.我的开发者机器是64位.

我目前正在处理的软件是用C#编写的.exe文件.不幸的是,我无法仅在C#中解决整个问题.这就是我在C++/CLI中开发了一个小型托管DLL的原因.两个项目都在同一个解决方案中.

我的C#.exe构建目标是"任何CPU".当我的C++ DLL构建目标是"x86"时,不加载DLL.据我所知,当我用Google搜索时,原因是C++/CLI语言与其他.NET语言不同,它编译为本机代码,而不是托管代码.

我将C++ DLL构建目标切换到x64,现在一切正常.但是,一旦我的客户端将我的产品安装在32位操作系统上,AFAIK的所有内容都将停止工作.我必须支持Windows Vista和7,它们各自的32位和64位版本.

我不想回落到32位.我的DLL中的250行C++代码只占我代码库的2%.并且该DLL仅在几个地方使用,因此在典型的使用场景中它甚至都没有加载.

我的DLL用ATL实现了两个COM对象,所以我不能使用" / clr:safe "项目设置.

有没有办法来配置解决方案和项目,使C#项目建立"任何CPU"版本中,C++项目建立两个 32位和64位版本,然后在运行时管理.EXE启动时,它使用的是32 -bit DLL或64位DLL取决于操作系统?

或者也许有一些我不知道的更好的解决方案?

提前致谢!

c# windows 64-bit c++-cli

17
推荐指数
2
解决办法
1万
查看次数

在另一个线程中运行异步函数

我正在评估Async CTP.

如何在另一个线程池的线程上开始执行异步函数?

static async Task Test()
{
    // Do something, await something
}

static void Main( string[] args )
{
    // Is there more elegant way to write the line below?
    var t = TaskEx.Run( () => Test().Wait() );

    // Doing much more in this same thread
    t.Wait(); // Waiting for much more then just this single task, this is just an example
}
Run Code Online (Sandbox Code Playgroud)

.net c# c#-4.0 async-ctp

17
推荐指数
2
解决办法
3万
查看次数

检测WCF中的套接字断开连接

我们正在构建一个WCF服务器(.NET 4.0).它只会使用net.tcp传输.

当客户端关闭TCP连接时,服务器将获取未处理的CommunicationException,并终止.

Q1.如何处理CommunicationException以便服务器不会终止并继续为其他客户端提供服务?

Q2.在处理程序中,如何获取已中止的会话的SessionId?我需要这个来清理一些特定于会话的数据.

提前致谢!

PS连接是通过Internet连接的,因此无论客户端是否正常断开连接,都可以随时关闭套接字.

c# wcf .net-4.0 net.tcp

16
推荐指数
1
解决办法
1万
查看次数

带有预共享字典的.NET二进制XML

我正在使用XmlDictionaryWriter将对象序列化为具有数据协定序列化程序的数据库.它的效果很好,尺寸和速度都比使用text/xml好2倍.

但是,我将不得不处理我的数据库中的大量记录,其中任何额外的字节直接转换为数据库大小的千兆字节.这就是为什么我喜欢通过使用XML字典来进一步缩小尺寸.

我怎么做?

我看到XmlDictionaryWriter.CreateBinaryWriter静态方法接受IXmlDictionary类型的第2个参数.MSDN说"XmlDictionary用作共享字典".

首先,我尝试使用系统提供的实现:

XmlDictionary dict = new XmlDictionary();
string[] dictEntries = new string[]
{
    "http://schemas.datacontract.org/2004/07/MyContracts",
    "http://www.w3.org/2001/XMLSchema-instance",
    "MyElementName1",
    "MyElementName2",
    "MyElementName3",
};
foreach ( string s in dictEntries )
        dict.Add( s );
Run Code Online (Sandbox Code Playgroud)

结果是.NET框架完全忽略了字典,仍然将上述字符串作为纯文本插入,而不是仅引用相应的字典条目.

然后我创建了自己的IXmlDictionary实现:

class MyDictionary : IXmlDictionary
{
    Dictionary<int, string> values = new Dictionary<int, string>();
    Dictionary<string, int> keys = new Dictionary<string, int>();

    MyDictionary()
    {
        string[] dictEntries = new string[]
        {
            "http://schemas.datacontract.org/2004/07/MyContracts",
            "http://www.w3.org/2001/XMLSchema-instance",
            "MyElementName1",
            "MyElementName2",
            "MyElementName3",
        };

        foreach ( var s in dictEntries )
            this.Add( s );
    }

    static IXmlDictionary …
Run Code Online (Sandbox Code Playgroud)

.net c# .net-4.0 datacontractserializer c#-4.0

8
推荐指数
1
解决办法
1013
查看次数

移动网络上的SignalR?

我正在评估SignalR技术用于我们的新产品(面向广大受众的移动网络应用程序,以及其他需要在某些页面上进行实时聊天的内容).

我按照指南创建了一个非常基本的聊天演示.然后我在我的IIS上部署了该演示,并开始与自己聊天.所有客户都在同一个WiFi网络上.

桌面浏览器或多或少都可以.

但是,iOS 4.2上的Safari和WP7.10上的IE - 它们都很糟糕.有时当我按下"发布"按钮时没有任何反应.有时外发消息被发送到桌面firefox,但是没有传入消息.

也许我错过了一些明显的东西?也许我需要jquery mobile而不是正常的?也许我应该调整IIS/web.config /无论如何,即使通过糟糕的移动互联网,SignalR也会蓬勃发展并开始完美运行?

或者它是否意味着,因为即使在从Web服务器单跳的WiFi上也不起作用,我应该抛弃SignalR并且只是编写一些JavaScript来轮询JSON端点以获取新消息?

提前致谢!

javascript asp.net .net-4.5 signalr

8
推荐指数
2
解决办法
4049
查看次数

iOS上的WebP图像格式

我目前正在研究在iOS软件中使用Google的WebP图像格式的可能性.

我发现使用谷歌的C库根据需要将WebP解码为RGBA8888并不困难.

但是,我想在API和性能方面创建一个与UIImage相当的实现.

Q1.是否有可能在iOS中开发图像解码器,以便原生imageWithData和其他API将读取新格式?

Q2.如果不是,UIImageView(和其他框架提供的控件)用什么API来绘制UIImage?它是公开的(例如drawInRect/drawAtPoint)还是内部的?我可以从UIImage继承,覆盖一些方法(例如+ imageWithContentsOfFile,+ imageWithData,+ imageNamed, - drawInRect,-drawAtPoint),并使我的WPImage对象在SDK提供的API中表现良好吗?

Q3.如果我假设的WPImage类的每个实例都会订阅UIApplicationDidReceiveMemoryWarningNotification(刷新RGBA图像缓冲区,而在RAM中留下更小的原始WebP数据),这不会对性能造成太大影响吗?我们正在开发的软件可能很容易在RAM中有数百个不同的图像.

提前致谢!

iphone image-formats uiimage ios webp

6
推荐指数
2
解决办法
2万
查看次数

Windows更新后不需要的C++项目重建

Windows更新后,Visual Studio始终重建我的C++项目.诊断日志说:

Project 'my.vcxproj' not up to date because 'C:\WINDOWS\SYSTEM32\TZRES.DLL'
was modified at 01/25/2018 07:43:09, which is newer than 'DEBUG\MY.LIB'
which was modified at 01/25/2018 05:28:05
Run Code Online (Sandbox Code Playgroud)

为什么visual studio会检查system32 DLL的时间戳?尤其是那些甚至没有联系的人?

重建没有帮助,因为Windows更新已设置该DLL的创建,修改和上次访问时间戳将来几个小时.BTW对DLL的描述说"Time Zones resource DLL",不知道是否相关.

c++ visual-studio visual-studio-2017

6
推荐指数
1
解决办法
277
查看次数

如何在钥匙串中保存CFUUID

我正在开发一个iPhone应用程序.
应用程序访问某些Web服务,其他东西应该识别设备ID.

由于不推荐使用UDID,我需要调用CFUUIDCreate来为此生成我自己的UUID.

该ID是安全敏感的:我的所有网络通信都是加密的,我不希望除证书认证服务器之外的任何人都知道UUID.
此外,我希望这个标识符能够在重新安装后继续存在.
使用钥匙串存储该UUID似乎是一个明显的解决方案.

我怎么做?

在互联网上,有一些示例如何在钥匙串中存储用户名和密码.我既没有用户也没有密码,只有16个字节的UUID(或单个NSString).

我需要使用哪个kSecClass?
我需要设置和检索哪些属性?
哪些属性是可选的,哪些属于强制性?

什么标头/框架定义了CSSM_ALGORITHMS?
文档提到cssmtype.h,xcode自动完成有<Security/cssmtype.h>但是xcode编译器说"找不到文件".

从常识来看,"身份"应该最合适.然而,文档说"身份是私钥和证书的组合",我没有.另外,我没有看到"关键字节"属性.

提前致谢!

iphone keychain udid sskeychain

5
推荐指数
1
解决办法
2786
查看次数