如何用.net Remoting实现一个客户端需要连接多个服务器端

如何用.net Remoting实现一个客户端需要连接多个服务器端,第1张

1、使用socekt通信一般步骤

1)服务器端:socker()建立套接字,绑定(bind)并监听(listen),用accept()等待客户端连接。

2)客户端:socker()建立套接字,连接(connect)服务器,连接上后使用send()和recv(),在套接字上写读数据,直至数据交换完毕,closesocket()关闭套接字。

3)服务器端:accept()发现有客户端连接,建立一个新的套接字,自身重新开始等待连接。该新产生的套接字使用send()和recv()写读数据,直至数据交换完毕,closesocket()关闭套接字。

2、多个客户端同时连接在一个服务器上

这时候服务器端应该使用多线程,每连接上一个客户端就给该客户端开启一个线程。监听端口的时候也要单独开一个线程、不然会阻塞主线程。这样做有一个明显的缺点,就是有N个客户端请求连接时,就会有N个线程,对程序的性能和计算机的性能影响很大,可以使用线程池进行管理。

使用线程池的好处:主要用于减少因频繁创建和销毁线程带来开销,因此那些经常使用且执行时间短的线程需要用线程池来管理。

3、C#版代码如下

服务器端代码:

[html] view plain copy

using System;

using SystemCollectionsGeneric;

using SystemLinq;

using SystemText;

using SystemNet;

using SystemNetSockets;

using SystemThreading;

using SystemIO;

namespace SockServer

{

class Program

{

static void Main(string[] args)

{

try

{

//把ip地址转换为实例

IPAddress ipa = IPAddressParse("127001");

//监听端口8001

TcpListener mylsn = new TcpListener(ipa, 8001);

//开启监听

mylsnStart();

//输出监听成功的信息

ConsoleWriteLine("在8001启动服务,等待连接");

//等待处理接入连接请求

while (true)

{

Socket mysock = mylsnAcceptSocket();

ConsoleWriteLine("有连接,连接来自" + mysockRemoteEndPoint);

work w = new work();

wmysock = mysock;

wmylsn = mylsn;

Thread t = new Thread(new ThreadStart(wmain));

tStart();

}

}

catch

{ }

finally

{ }

}

}

class work

{

public Socket mysock;

public TcpListener mylsn;

public void main()

{

//接收客户端消息

byte[] data = new byte[100];

mysockReceive(data);

string rt = SystemTextUTF8EncodingUTF8GetString(data);

ConsoleWriteLine(rt);

//给客户端发消息

mysockSend(UTF8EncodingUTF8GetBytes("server callback"));

//释放资源

mysockClose();

mylsnStop();

}

}

}

客户端代码:

[html] view plain copy

using System;

using SystemCollectionsGeneric;

using SystemLinq;

using SystemText;

using SystemNet;

using SystemNetSockets;

using SystemThreading;

using SystemIO;

namespace SockClient

{

class Program

{

public static void Main()

{

//新建客户端套接字

TcpClient tclient = new TcpClient();

//连接服务器

tclientConnect("127001", 8001);

ConsoleWriteLine("输入要发送的消息");

//读入要传输的字符

string str = ConsoleReadLine();

//得到流

Stream stm = tclientGetStream();

//发送字符串

ASCIIEncoding asen = new ASCIIEncoding();

byte[] data = asenGetBytes(str);

stmWrite(data, 0, dataLength);

//接受服务器返回的消息

byte[] back = new byte[100];

int k = stmRead(back, 0, 100);

//输出服务器返回的消息

for (int i = 0; i < k; i++)

{

ConsoleWrite(ConvertToChar(back[i]));

}

//关闭连接

tclientClose();

}

}

}

如果后台textboxvisible设为false了,在网页中就不再有这个textbox的ID信息了,所以在前台用JS是找不到这个控件的。

解决方法是:

1 textboxvisible后台设为true,完全用前台JS来控制其显示及不显示。

2完全用后台来控制其显示或不显示,只不过需要在前后台交换数据。

客户端控件就是标准的HTML标签

服务器控件是加上runat=server之后的标签,可以在服务器端访问到。

1)、Aspnet服务器控件提供更加统一的编程接口,如每个Aspnet服务器控件都有Text属性。

2)、隐藏客户端的不同,这样程序员可以把更多的精力放在业务上,而不用去考虑客户端的浏览器是ie还是firefox,或者是移动设备。

3)、Aspnet服务器控件可以保存状态到ViewState里,这样页面在从客户端回传到服务器端或者从服务器端下载到客户端的过程中都可以保存。

4)、事件处理模型不同,Html标注和Html服务器控件的事件处理都是在客户端的页面上,而Aspnet服务器控件则是在服务器上,举例来说:

<input id="Button4" type="button" value="button" runat="server"/>

是Html服务器控件,此时我们点击此按钮,页面不会回传到服务器端,原因是我们没有为其定义鼠标点击事件。

<input id="Button4" type="button" value="button" runat="server" onserverclick="test" />

我们为Html服务器控件添加了一个onserverclick事件,点击此按钮页面会发回服务器端,并执行test(object sender, EventArgs e)方法。

<asp:Button ID="Button2" runat="server" Text="Button" />

是Aspnet服务器控件,并且我们没有为其定义click,但是我们点击时,页面也会发回到服务器端。

由此可见:Html标注和Html服务器控件的事件是由页面来触发的,而Aspnet服务器控件则是由页面把Form发回到服务器端,由服务器来处理。

不太明白你的意思。

1种方式是SingleR的方式。这种方式的原理是 客服端每次请求都会创建一个GuID连接唯一吗,根据这个就能知道是哪个客服端了,用Nuget下载一个包就可以了

你在程序包管理控制台可输入install-package MicrosoftAspNetSignalR 也可以安装,然后去官方看文档

2你说的根据IP的方式我给你一个获取IP的方法。

public static string

IPAddressAll

{

get

{

string

ip =

HttpContextCurrentRequestUserHostAddress;

string

agentip =

HttpContextCurrentRequestServerVariables["HTTP_X_FORWARDED_FOR"];

if

(!stringIsNullOrEmpty(agentip))

{

//有代理

if (agentipIndexOf("") ==

-1)

agentip =

null;

if (agentip != null)

{

if

(agentipIndexOf("unknow") != -1)

agentip =

agentipReplace("unknow", stringEmpty);

string[]

temparyip = agentipReplace("

", stringEmpty)Replace("'",

stringEmpty)Split(new char[] {

',', ';' });

//过滤代理格式中的非IP和内网IP

for (int

i = 0; i <

temparyipLength; i++)

{

if (temparyip != stringEmpty

&& IsIPAddress(temparyip)

&& temparyipSubstring(0,

3) != "10"

&& temparyipSubstring(0,

7) != "192168"

&& temparyipSubstring(0,

7) != "17216")

{

ip += "," +

temparyip;

}

}

}

}

else

{

agentip

= null;

}

return ip;

}

}

非常简单,NET 就是 Microsoft® 的 XML Web 服务平台。不论操作系统或编程语言有何差别,XML Web 服务能使应用程序在 Internet 上传输和共享数据。

Microsoft® NET 平台包含广泛的产品系列,它们都是基于 XML 和 Internet 行业标准构建,提供从开发、管理、使用到体验 XML Web 服务的每一方面。XML Web 服务将成为您今天正在使用的 Microsoft® 的应用程序、工具和服务器的一部分 — 并且将要打造出全新的产品以满足您所有业务需求。

更具体地说,Microsoft 正在五个方面创建 NET 平台,即工具、服务器、XML Web 服务、客户端和 NET 体验。

商业需求

XML Web services是分布式计算的重要标准,也是未来软件开发的技术趋势,通过XML Web services标准,应用软件之间可以实现跨平台,跨编程语言的联接和互操作。作为微软平台的一个基本功能,基于XML Web services标准的NET 开发平台可以实现个人之间,个人与企业之间,和企业之间的信息互连,这样就实现人们可以随时随地存取和使用信息的梦想。

在微软构造和实现这种NET- connected平台的同时,众多的合作伙伴和厂商也在开发基于XML Web services标准的可以互相联接和整合软件产品和解决方案。这些软件产品和解决方案正在给他们的客户带来巨大的好处:企业的信息系统可以更方便地为其用户提供更好的服务,企业的信息系统可以与合作伙伴的系统更好地相连,可以为企业的雇员提供及时正确的信息。

产业商机

微软公司的NET Connected Logo计划,是一个全球认证计划,主要是用来标识那些基于XML Web services而开发的软件和解决方案。经微软认证的软件公司,可以将NET Connected 标志图案置于其被认证软件产品的包装,文档,宣传材料和广告中。

NET Connected标识,标志着您的应用软件基于NET Framework开发,能够基于XML Web services标准和其他的软件共享数据和功能。NET Connected Logo计划可以帮助客户识别应用软件、系统和服务是否为了适应下一代Internet计算的要求而进行了优化。

参加Microsoft NET Connected Logo计划的好处

Microsoft NET Connected Logo会:

标识领先的软件开发技术和实力。

区别您的应用软件于其他的软件产品。

充分利用微软在NET上所做的广泛的市场宣传和投入。

通过NET Connected 目录在全球推广和宣传您的软件产品和解决方案。

使用NET Connected产品和服务的用户会受益:

经认证的软件产品和服务,可以基于XML Web services与其他的软件互联,并被无缝地整合进企业未来的信息系统中。

经认证的产品,基于NET Framework开发,有良好的性能,稳定性和安全性,意味着这个产品或服务可以信赖。

可以帮助最终用户迅速地识别那些能够帮助他们随时随地信息互连的技术。

Microsoft NET Connected 白金应用要求:

应用软件或服务应基于Microsoft NET Framework 开发,主要的应用功能提供有基于XML Web service 的接口, 这个Web service调用的过程要符合业界标准:XML Schema 10, SOAP 11XML Schema 10, SOAP 11以及WSDL 11 。应用应该用到至少一种微软的应用服务器,如SQL Server, Exchange Server, Biztalk Server等。

The NET Connected Directory

微软NET Connected Directory 提供了一个中心的位置,用户可以在这里查找信息,合作伙伴可以在这个位置展示满足NET Connected logo要求的软件和服务。即使微软推广这些应用软件和XML Web services时,合作伙伴仍然可以继续维护与宿主这些服务或应用软件,维护任何支付方式,处理所有与这些产品相关的问题。

通常,如果你的产品得到了NET Connected 资质认证,他就会自动的在目录产品列表中显示出来。一个合作伙伴可以选择是否要在NET Connected Directory中显示自己的产品。

合作伙伴的信息在加入目录之前要经过评审得到允许才可加入。

合作者详细网址(需要URL)

为了能够使合作者对它们提交的东西做出改动时(支付结构,下载网址,描述等)不用重新提交入口,我们需要连接到合作者的网址,这个网址包括后面列出的一些信息。这些信息不仅会帮助开发者得到计划的版本,下载信息等,它也包含应用软件自身的基本商业信息。合作者的网页包含的信息为:

使用XML Web service的XML Web 服务或应用软件的名字

描述产品的功能

执行它的步骤

连接到XML Schema的网址,浏览XML Schema(可选)

WSDL Schema Version (ie: v11)

SOAP Version (ie: v11)

XML Web service 或软件花费和支付方法

系统要求(可选)

和哪些产品一起工作效果好或要求(可选)

建立联系得到用户支持

建立连接下载软件(可选)

直接回到NET Connected directory的链接http://wwwmicrosoftcom/net/directory

产品有效期(如果有的话)

可选信息--常见问题回答,其他信息,联系电话

网页必须显示适当的NET Connected Logo

合作者的信息在加入目录之前要经过评审得到允许才可加入

未来的需求

将来NET Connected Logo计划会产生更高级的标准。

这个文档只是作为参考,MICROSOFT并没有授权,或隐含什么。

使用 NET

就其核心问题而言,Microsoft® NET是关于使技术为人们所用,而不是强制个人适应其计算机的限制。利用 NET,无论何时何地您总能连接到您首选设备上的信息。利用 NET,您可以保护您的个人信息和企业数据,同时允许有您的授权的他人连接到这些信息。

NET 的价值

对于个人(包括您自己、您的客户、雇员、供应商和合作伙伴)来说,使用 Microsoft NET 进行生成的成果将是无缝的、吸引人的体验。

使用 NET 进行开发

借助 Microsoft Visual Studio® NET 和 Microsoft NET 框架,Microsoft® NET 提供了生成和部署最先进的应用程序和 XML Web services 的最快捷方法。

NET 对开发人员意味着什么

通过使用 Microsoft Visual Studio® NET 和 NET 框架,Microsoft 为开发人员提供了一整套开发工具,使用这些工具可以快速而轻松地创建最先进的应用程序和 XML Web services。

借助 Visual Studio NET 和 NET 框架,Microsoft NET 允许更快地开发软件应用程序和服务。

NET 框架和 Visual Studio NET 将为应用程序和 XML Web services 提供更高的可靠性。

XML Web services 的使用将允许在 NET 平台上创建的应用程序和服务更容易、更有效地集成在一起。

XML Web services

对于 Microsoft NET,在处理一组有限任务的离散单元(XML Web services)中生成代码。由于基于 XML 的标准接口简化了软件之间的通讯,因此可以将 XML Web services 一起集成到高度专门化的应用程序和体验。您可以使用来自世界各地的最好的 XML Web services,快速而轻松地创建所需的解决方案。Microsoft 将提供一组以用户为中心的核心 XML Web services(即 Microsoft NET 我的服务)以提供诸如用户标识和日历访问之类的功能。

更快的开发

通过使用公共语言运行库(NET 框架的一部分),开发人员可以使用任何现代编程语言创建 XML Web services,大幅度增大开发人员可用资源量,并允许开发人员随意使用最适合解决身边问题的编程语言。

Visual Studio NET 在很大程度上自动化了将应用程序转换为 XML Web services 的过程,减少了快速创建和部署解决方案所需的时间和工作。

在本质上,XML 将数据与数据的显示方式分开。将 NET 体验与显示特性分开,可使添加新接口技术(如语音和手写识别)变得容易,而无需重编应用程序。

NET 我的服务和其他 NET 构件块服务提供了许多应用程序所需的核心功能,如用户身份验证、通知功能、联系人列表等等,而无需额外的编码工作。

更高的可靠性

借助丰富的处理能力和当前可用的带宽,NET 平台可以利用分布式计算技术。只要处理最有意义或者只要驻留有 XML Web services,处理就会发生,从而分散 CPU 负载并减少网络通信量。

公共语言运行库准备好了一个托管的执行环境,可消除内存泄漏、访问冲突和版本控制问题。

NET 框架强制类型安全、显式代码共享和应用程序隔离,从而保证没有任何 XML Web services 可以影响或非法调用另一个 XML Web services。

集成

在 Microsoft NET 中 XML(由 WWW 联合会 (W3C) 维护的开放标准)的使用消除了数据共享和软件集成的障碍。简单对象访问协议 (SOAP) 是由 W3C 标准化的、基于 XML 的消息传递技术,它指定定位 XML Web services 的所有必需规则,将这些服务集成到应用程序中,并在它们之间进行通讯。公共语言运行库 (CLR) 提供了统一的管理环境,允许用任何编程语言编写的 XML Web services 一起工作。NET 还具有数据库访问能力,允许开发人员将符合 ODBC 的数据存储区引入到其应用程序体系结构中。

通过允许 IT 部门利用其旧式应用程序和数据存储区以及提供专门技能和外包服务的其他供应商的 XML Web services,Microsoft NET 使 IT 部门可以降低内部成本并扩展可向客户提供的功能。Microsoft NET 旨在使来自多个站点和公司的服务可以聚集为供用户使用的宝贵经验。

NET 与安全性

安全性和隐私是创建和提供吸引人的用户体验的核心部分。将计算能力分布于许多系统(您的家庭和公司内部及外部)导致了新类型的挑战。

构建 Microsoft NET 平台时从一开始就考虑到了安全性。通过与个人和管理员的良好操作做法相耦合,它为使用户能够控制其个人和企业信息的计算体验提供了基础。

NET 框架是 NET 平台中居于核心地位的编程引擎,它通过其核心安全功能提供保护客户机和服务器的方法。由于公共语言运行库在核心层透明地处理安全性,因此开发人员可将精力集中于应用程序逻辑。开发人员仍然可以随时使用和扩展安全模型。

评价对 NET 安全性的独立评估

Foundstone:对 NET 框架安全性的独立分析

Foundstone, Inc 和 CORE Security Technologies 的长期安全性分析,涉及前两个 Beta 版本,对 NET 框架的评价是“robust platform for enterprise and Web application security(企业和 Web 应用程序安全性的可靠平台)”。

InfoWorld:NET 框架的安全性决非笑谈

InfoWorld 的评价是“it looks as if Microsoft got it right this time and built security into Net Framework from the ground up(看起来这一次 Microsoft 做对了并从一开始就将安全性构建到 Net 框架中)”

eWeek:Windows 提升了安全性

eWeek Labs 对 Microsoft Windows Net Server Beta 3 进行了测试,发现有重要的安全性改进。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何用.net Remoting实现一个客户端需要连接多个服务器端

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情