Tag: 客户端 服务器

如何确保.Net应用程序是真的?

在客户端 – 服务器应用程序中,服务器如何知道请求来自真正的应用程序而不是来自它的篡改副本? 我还没有开发客户端和服务器应用程序。 解决方案可能是普通套接字,wcf,IIS托管或其他。

客户端应用程序在C#中在本地网络上查找服务器的最佳方式是什么?

客户端使用GenuineChannels连接到服务器(我们正在考虑切换到DotNetRemoting)。 我的意思是找到要连接的服务器的IP和端口号。 看起来像蛮力的方法是尝试网络上的每个IP尝试活动端口(甚至不确定是否可能)但必须有更好的方法。

使用强命名程序集中定义的旧版本接口创建客户端激活对象时的System.InvalidCastException

我有一个关于.Net Remoting,版本控制和创建客户端激活对象的查询。 这是场景: 有2个接口,驻留在它们自己的程序集“SharedTypes”中:IServer和IAccount。 IServer包含返回字符串的方法“GetStatus”和返回IAccount类型的“CreateAccount”。 这是作为v1.0.0.0注册到GAC中的。 服务器应用程序引用SharedTypes并使用具体类Server和Account实现IServer和IAccount。 这些是MarshalByRefObject对象。 Server应用程序将Server类编组为单例对象。 客户端应用程序引用SharedTypes并成功通过IServer接口连接到可远程服务器对象。 在这里,我可以成功调用GetStatus和CreateAccount(它返回一个客户端激活的对象)。 到目前为止一切都好。 现在我将SharedTypes的版本增加到v2.0.0.0并注册到GAC,删除旧的v1.0.0.0版本。 Server应用程序是针对此版本构建的,但客户端不是。 现在,当我运行客户端应用程序时,它会按预期抱怨System.IO.FileNotFoundException,即它无法在GAC中找到v1.0.0.0的SharedTypes。 如果我在客户端的exe目录中复制SharedTypes的v1.0.0.0,则客户端应用程序最终会绑定到此(在GAC查找失败后)。 客户端应用程序启动,我可以成功调用IServer对象上的GetStatus(通过单例对象)。 但是,如果我调用CreateAccount – 它应该返回一个客户端激活的对象,我会得到以下exception: System.InvalidCastException: Return argument has an invalid type. at System.Runtime.Remoting.Proxies.RealProxy.ValidateReturnArg(Object arg, Type paramType) at System.Runtime.Remoting.Proxies.RealProxy.PropagateOutParameters(IMessage msg, Object[] outArgs, Object returnValue) at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type) at SharedTypes.IServer.GetAccount() 我的问题是为什么在服务器上调用GetStatus从客户端(使用v1.0.0.0)激活单例对象不会抛出此exception,而通过CreateAccount创建客户端激活对象呢? 由于这两种类型都是在服务器上创建的,我认为GetStatus调用会产生相同的exception吗?

C#SQLServer检索结果并以.csv格式放置

我看了一下网站和谷歌,但我似乎无法找到一个很好的解决方案,我正在尝试做什么。 基本上,我有一个客户端服务器应用程序(C#),我向服务器发送一个SQL select语句(连接到SQL Server 2008),并希望以CSV方式将结果返回给客户端。 到目前为止,我有以下内容: if (sqlDataReader.HasRows) { while(sqlDataReader.Read()) { //not really sure what to put here and if the while should be there! } } 不幸的是,我真的很想将C#与SQL连接起来。 我需要有关如何简单地将结果放在csv格式的字符串中的任何提示。 列和字段可能不同,所以我不能使用某些东西的方法,就像我在一些网站上看到的那样。 我不确定我是否可以理解了! 我非常感谢有关如何解决这个问题的任何提示/要点!

c#中的多客户端,异步套接字,最佳实践?

我试图更好地理解c#中的tcp / ip套接字,因为我想挑战自己,看看我是否可以创建一个可用的MMO基础设施(游戏世界,地图,玩家等)纯粹用于教育目的,因为我没有意图成为另一个“OMGZ iz将让我的r0x0 MMORPG比魔兽更好!!!”,你知道我在说什么。 无论如何,我想知道是否有人可以阐明如何设计这种系统以及需要什么样的东西,以及我应该注意什么? 我最初的想法是将系统拆分为单独的客户端/服务器连接,每个连接(在自己的端口上)执行特定任务,例如更新玩家/怪物位置,发送和接收聊天消息等等。处理数据更容易,因为您不总是需要在数据上放置标题以了解数据包包含哪些信息。 这是否有意义并且是有用的还是我只是简单地使事情复杂化? 非常感谢您的回复。

异步服务器套接字多个客户端

我一直在使用msdn上发布的以下代码: http://msdn.microsoft.com/en-us/library/fx6588te.aspx 我知道在应用程序等待新客户端时,服务器应用程序未被阻止。 但是,此应用程序(甚至套接字)可以处理多个并发请求吗? 如果客户A和B同时连接会发生什么? 如果客户端A连接并且其请求的处理需要5秒钟,如果客户端B稍后连接,则它必须等待客户端A完成才能开始处理吗? 或者客户A和客户B的请求是否会同时处理? 我已经通过将Thread.Sleep(n)命令放在套接字侦听器代码中的接收/发送数据之间进行了一些测试。 然后,我可以向套接字发送多个请求,并且它们似乎已被处理。 但是套接字总是在同一个线程id上处理它们 – 这让我相信它实际上并不是同时发生的。 特别是微软的描述,这个应用程序在等待新连接时根本没有阻止 – 这是否意味着它可以处理并发连接?