摘要:
之前做过局域网的聊天软件,现在要做运行在广域网的聊天软件。开始接触网络编程,首先是接触到TCP和UDP协议在网上查资料,都是这样描述 TCP面向连接,可靠,数据流 。UDP无连接,不可靠,数据报。但是实际使用的时候就会有很多疑惑了,比如我们做一个聊天软件 客户登陆我们的服务器,我们到底是使用哪一种协议呢 是使用TCP和客户端保持常连接,还是使用UDP这种无连接,数据传输不可靠 还是使用TCP在和客户端交换一次数据后就断开连接 需要的时候再连接。这是3种情况。这几种情况针对于需要服务器转发的消息,需要客户端之间点对点传输的情况除外1。使用TCP协议和客户端保持常连接(长连接) 从客户登陆到客户. 阅读全文
摘要:
这个是界面要用到的基窗体此窗体继承自Form 扩展了几十个属性 提供非常丰富的属性来设置窗体的外观,包括窗体发光效果 主题图片(可与背景色融合),以及窗体的控制按钮以及拖拽操作等,凡是继承自此基窗体的其它窗体 几乎不用编写任何代码可以轻松地修改窗体外观 修改为模态对话框等下面是效果图扩展属性此部分并不包含在Fox核心之内 阅读全文
摘要:
目前这个是服务端主程序大致的结构以后可能进一步修改 使用连接池代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--1privateboolrunning=false;2privateIPAddressserverIP;3privateTcpListenerlistener;4privateThreadWaitTread;//监听客户线程响应多个客户端的连接请求等待客户端登陆5privateTcpClientremoteClient;//远程连接6p 阅读全文
摘要:
什么是打洞,为什么要打洞由于Internet的快速发展 IPV4地址不够用,不能每个主机分到一个公网IP 所以使用NAT地址转换。下面是我在网上找到的一副图一般来说都是由私网内主机(例如上图中“电脑A-01”)主动发起连接,数据包经过NAT地址转换后送给公网上的服务器(例如上图中的“Server”),连接建立以后可双向传送数据,NAT设备允许私网内主机主动向公网内主机发送数据,但却禁止反方向的主动传递,但在一些特殊的场合需要不同私网内的主机进行互联(例如P2P软件、网络会议、视频传输等),TCP穿越NAT的问题必须解决。下面是NAT的几种类型NAT设备的类型对于TCP穿越NAT,有着十分重要的 阅读全文
摘要:
下面是Fox核心的大致使用模型Server为服务端程序 Client为客户端程序 它们分别拥有Fox服务端核心组件和Fox客户端核心组件,客户端在需要的时候不经过服务端和其它客户端连接 阅读全文
摘要:
经过一段时间学习之后,心里萌生了一点想法 做一个自己的即时通讯软件一来是对所学知识的一些巩固,而来也是在实践的过程中探索和掌握新的知识,我知道对于目前的水平,开发这一的一个东西难度比较大。不过我会尽力去完成它在实践的过程中我会根据进度不定期地更新这个系列的文章,软件完成之后将会发布源代码这是总体的计划:1:开发一个即时通讯核心。 此核心由服务端核心组件和客户端组件构成,此核心将对文字传输,视频,语音,文件传输提供强力支持。这些传输都是面向Internet的 能穿透防火墙,不受NAT影响,实现P2P通讯。我的网名叫:狐狸狡猾不 所以我暂时给此核心取名为Fox核心。Fox核心将能很方便地被其它软件 阅读全文
摘要:
一直以来都在自定义窗体上困惑 从最初的把边框隐藏,到使用位图,处理消息支持窗体的拖动等,总是不太理想。因为以前都是将FormBorderStyle设置为none 这样窗体就真的没有系统边框了,这也带来了一些问题 一旦把FormBorderStyle设置为none就等于去掉了窗体的非客户区 系统也就认为窗体是没有边框的,当然这样的窗体也失去了系统指令 具体表现在Windows7上,系统主题让窗体在最大化最小化的时候都有动画效果,打开和关闭窗体的时候也有淡入淡出的效果 一旦把FormBorderStyle设置为none这些效果都将失去经过一段时间之后 终于明白了怎么保留这些效果的同时又可以让客户区 阅读全文
摘要:
计算机网络最根本的目的是实现网络中计算机之间的分布式进程间通信即时通讯所使用的传输协议是TCP和UDPwindows系统和linux系统都支持socket 按照这样的规范 我们可以实现垮平台的信息交换所以我们都经过socket传输数据,TCP和UDP位于网络中的传输层,位于IP层之上 是用户功能的最底层TCP:面向连接的、可靠的、基于字节流的运输层通信协议 数据一定是可靠地到达,先发送的先到,丢包重传 可以提供流控制机制,建立一个TCP连接需要经过3次握手,关闭一个TCP连接需要经过4此握手 ,在一个TCP连接中只支持两方的通信,不支持广播,采用字节流方式,如果字节流太长,将其分段。UDP:无 阅读全文
摘要:
进程间通信就是在不同进程之间传播或交换信息,而进程间通信的环境可以是本地也可以是远程(网络),位于网络上的两个进程之间通信的数据需要经过网络传输,例如经过Socket通信而进程是独立的空间 原则上不允许外界访问,在.NET托管环境中 是强制的实行了这样的安全措施,不能直接访问其它程序的内存空间防止对进程的非法访问显然要实现进程间通信必须通过一个中介 这个中介可以是文件 内存共享区 或者是数据库等,一个进程往中介区写数据 另一个读数据,而为了避免出现差错 又需要对进程进行同步下面是进程间通信的3种方式:1.共享内存系统 相互通信的进程共享某些数据结构或者存储区.进程访问共享内存进行读写实现信息 阅读全文
摘要:
看一看效果 此控件设置了常用的外观属性 例如主题色彩 线条宽度 内圆大小 外圆大小都可以调节提供2个对外的方法Start() Stop()控制控件的行为 调用Start()动画开始 Stop()结束动画还原到初始状态以下是字段 该控件继承自Control类代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--1privateTimer_Timer;2privatebool_IsLoading=false;3privateint_NumberOfSpo 阅读全文