- 1、本文档共11页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C#局域网聊天工具怎么实现?
网络通讯编程的基础便是协议,信息的发送常用的协议有面向连接的TCP协议,以及不面向连接的UDP协议TCP:TransmissionControlProtocol传输控制协议,其是一种面向连接的、可靠的字节流服务。面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。这一过程与打电话很相似,先拨号振铃,等待对方摘机说“喂”,然后才说明是谁。
UDP:UserDatagramProtocol用户数据报协议(RFC768),UDP传送数据前并不与对方建立连接,即UDP是无连接的,在传输数据前,发送方和接收方相互交换信息使双方同步。系统也要定义自己的通讯协议,来完成一些系统的功能,如用户上,下线的通知,都要定义自己的通讯协议来完成相应的功能!也可以称这种自定义的协议为“命令”.
下面以著名的飞鸽传书为例,说明其自定义的协议(命令)
IPMSG_NOOPERATION不进行任何操作
IPMSG_BR_ENTRY用户上线
IPMSG_BR_EXIT用户退出
IPMSG_ANSENTRY通报在线
IPMSG_SENDMSG发送消息
IPMSG_RECVMSG通报收到消息
IPMSG_GETFILEDATA请求通过TCP传输文件
IPMSG_RELEASEFILES停止接收文件
IPMSG_GETDIRFILES请求传输文件夹以“IPMSG_BR_ENTRY用户上线”和“IPMSG_ANSENTRY通报在线”为例说明命令处理流程:当程序启动时,命令IPMSG_BR_ENTRY被广播到网络中,向所有在线的用户提示一个新用户的到达(即表示“我来了”);所有在线用户将把该新上线用户添加到自己的用户列表中,并向该新上线用户发送IPMSG_ANSENTRY命令(即表示“我在线”);该新上线用户接收到IPMSG_ANSENTRY命令后即将在线用户添加到自己的用户列表中。PS:根据本系统的特征,可以在聊天部分采用UDP协议,在文件传输,视频,语音功能上采用TCP协议
程序启动就要发送广播消息,如何发送广播消息,以及C#如何实现广播.第一部分.什么是广播地址,以及广播地址怎么计算
1.1广播地址是什么?
主机号全为1,用于向一个网络内的所有主机发送信息的IP地址.如:受限的广播地址是55。该地址用于主机配置过程中IP数据报的目的地址,此时,主机可能还不知道它所在网络的网络掩码,甚至连它的IP地址也不知道。在任何情况下,路由器都不转发目的地址为受限的广播地址的数据报,这样的数据报仅出现在本地网络中。
PS:一般无特殊要求广播地址选择55即可.
1.2计算方法
首先计算网络地址=IP地址逻辑与()子网掩码
先把IP,子网掩码转为2进制,然后进行逻辑与运算,得出网络地址
例:
IP子网掩码
IP转二进1010010000000011
子网掩1111111100000000
与运算1010010000000000
这就是网络地址,其中子网掩码全1对应为网络号,全0对应的是主机号,即对应的网络号为192.168,主机号为0.0.将网络地址主机部分全取反后得到的地址便是广播地址:
广播地1010010011111111
换成10进制则为第二部分.C#利用UDP协议如何实现广播2.1如何实现UDP广播,直接举例说明:button1_Click时使用了UDP广播向外发送了数据RecData()在后台接受UDP协议的消息//UDP通过广播实现群发功能namespace BroadcastExample{publiclass Form1:Form{delegate void AppendStringCallback(stringtext);AppendStringCallback appendstringcallback;//使用的接收端口51008///summary///端口号////summaryprivate int port=51008;///summary///udp连接对象////summaryprivate UdpClient udpclient;public Form1(){InitializeComponent();appendstringcallback = new AppendStringCallback(AppendString);}///summary///委托对象的处理过程////summary///paramname=text/param
文档评论(0)