当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: 异步Socket通信By codeprojec
 

 

 ·如何对listview的项进行排序    »显示摘要«
    摘要:如何对listview的项进行排序 当您使用资源浏览器查看文件时,您可以随心所欲的按名称、大小、类型及修改日期不同的列对文件进行大小排序。.net提供的listview组件没有直接提供这种功能,但要实现并不难。 listview.sort()方法的功能是“对列表视图的项进行排序”,可当您调用它时却什么也没有发生,原因是您没有为listview1.listviewitemsorter指定排序器......
 ·c#windows程序的生与死    »显示摘要«
    摘要:在c#的windows程序中,虽然可以快速的开发,不过不知道程序的运行总是一件不是很爽的事情,所以我对windows程序进行了的跟踪.大致了解一下c#中程序运行的规则(因水平有限有不完善的地方大家原谅): 第一部:进入static void main() 第二部运行static void main() 中的application.run(new form1());在这中间对窗体进行构造. 2.1......


异步Socket通信

异步socket通信

by john mctainsh  from: http://www.codeproject.com/csharp/socketsincs.asptranslate by: hillfree 【程序编程相关:用C#和VB.NET实现VS.NET或O

【推荐阅读:用C#和VB.NET实现VS.NET或O

【扩展信息:C#,程序员的新工具

本文介绍如何使用非阻塞方式的socket通信,并且创建了一个聊天程序的例子来帮助说明.

介绍

本文介绍如何在多个应用程序之间创建与使用tcp/ip socket来进行通信.这些应用程序可以运行在同一台机器,也可以在局域网内,甚至也可以是跨越internet的*.这种方法的好处是不需要你自己来使用线程,而是通过调用socket的非阻塞模式来实现.在例子中:服务器创建病侦听客户端的连接,一旦有客户连接,服务器就将其加入到一个活动客户的列表中,某个客户端发送的消息也有服务器发送到各个连接的客户端,就好像聊天室中的那样.或许remoting (远程调用)是做这种工作更好的办法,但是我们这里还是来学习学习如何使用socket来实现.

*注意:跨越internet的通讯要求服务器有独立的ip地址并且不在代理或是放火墙之后.

事件时序

服务器必须要先侦听,客户端才能够连接.下面的图例说明了在一个异步socket会话中的事件时序.

运行示例

实例代码分为两部分:chatserver 与chatclient. 我们首先来创建chatserver ,然后使用下面的telnet命令来测试它.

telnet {server machine ip address or machine name} 399telnet 10.328.32.76 399

这时,服务器上应该出现一条消息来表明这个客户连接的地址与端口.在任一个telnet窗口中键入的字符都会回显到所有与服务器连接的telnet的窗口中.试试从多台机器上并发连接服务器.不要使用localhost或者127.0.0.1来作为服务器程序唯一的侦听地址.

然后运行chatclient实例作相同的试验与多个客户端与多个telnet并存的测试.

为什么要使用.net的socket?

.net在很多地方都用到了sockets,比如:webservices与remoting.但是在那些应用中底层的socket支持已经做好了,不需要直接使用.但是,与其他非.net系统的socket打交道或简单通信的场合中socket的使用还是很有必要的.它可以用来与诸如dos,windows与unix系统进行通信.底层的socket应用也可以让你减少了诸如组测,权限,域(domains),用户id,密码等这些麻烦的安全方面的顾虑.

chatserver / listener

服务器侦听端口,当有连接请求时,接受该连接并返回一条欢迎信息.在例子中客户连接被加到一个活动客户列表m_aryclients中去.这个列表会根据客户加入与离开作相应的增删.在某些情况下可能会丢失连接,所以在实际的系统中还应该有轮询侦测客户端是否在线的部分.当服务器端的listener收到客户端发来的信息后,它会把消息广播到所有连接的客户端.

下面讨论两种侦听的方法,一个是用轮询(polling),另外一个在使用事件来侦测连接的请求.

方法1 – 使用轮询的 tcplistener

system.net.sockets中的tcplistener 类为我们提供了一个侦听与处理客户连接的简单手段.下面的代码侦听连接,接受连接,并且向客户连接发回一个带有时间戳的欢迎信息.如果有另外一个连接请求到来,原来的连接将会丢失.注意,欢迎信息是采用ascii编码,而不是unicode.


...   下一页
    摘要:如何在c# 中使用wmi 实现远程查询和共享 wmi 对大多数开发人员来说是一个感觉比较迷惑的东西,对我来说也是如此。直到最近看了一篇关于 .net management 的介绍后,才对wmi 有了一点点了解。下面就把自己的一点经验写给爱好c# 的朋友们。 wmi 是一个非常强大的工具,它可以提供给我们非常强大的功能。比如在我们开发应用程序时经常需要得到本地或远程操作系统的信息。虽然看起......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE