实验5 广播通信设计
AGC实验报告

实验报告计算机实习电子工程学院班级:08班姓名:祁振国学号:47班内序号:27目录一、实验名称................................................................... 错误!未定义书签。
二、实验目的................................................................... 错误!未定义书签。
三、实验摘要与关键词................................................... 错误!未定义书签。
四、实验设计任务及要求............................................... 错误!未定义书签。
五、实验设计思路与总体结构框图............................... 错误!未定义书签。
5.1、电路结构框图 ........................................................ 错误!未定义书签。
5.2、倍压整流原理: .................................................... 错误!未定义书签。
5.3、总体结构框图 ........................................................ 错误!未定义书签。
六、分块电路和总体电路的设计(含电路图)........... 错误!未定义书签。
6.1.输入缓冲级电路....................................................... 错误!未定义书签。
6.2.直流耦合互补级联放大电路................................... 错误!未定义书签。
6.3.射级跟随器输出级电路........................................... 错误!未定义书签。
计算机网络实验思考题答案

实验一网线制作1、简述自制网线的情况,并分析原因;2、6类双绞线的制作相对于5类(超5类)线,需要注意的地方有哪些(扩展);下面是100M和1000M网线的常见制作方法、千兆网线的施工注意事项。
5类线(100M)的制作:a: 绿白(3)、绿(6)、橙白(1)、蓝(4)、蓝白(5)、橙(2)、棕白(7)、棕(8)b:橙白(1)、橙(2)、绿白(3)、蓝(4)、蓝白(5)、绿(6)、棕白(7)、棕(8)常见普通线为:b-b 常见对拷线:a-b(1-3、2-6交叉)6类线的制作(千兆线):a:橙白(1)、橙(2)、绿白(3)、蓝(4)、蓝白(5)、绿(6)、棕白(7)、棕(8)b: 绿白(3)、绿(6)、橙白(1)、棕白(7)、棕(8)、橙(2)、蓝(4)、蓝白(5)常见普通线为:b-b 常见对拷线:a-b(1-3、2-6、4-7、5-8交叉)-(与100m的不同)两种网线的线序不同3、为什么夹线钳剥掉外层护套要让裸漏的网线稍长一点,整好线序后又剪短;方便整理、排列线序4、步骤5中保护套为何也要伸入水晶头中;增强网线的抗拉伸能力,加强网线与水晶头之间的连接实验二路由器的配置1、路由器的几种配置方式分别在什么场合使用比较合适?1.控制台方式这种方式一般是对路由器进行初始化配置时采用,它是将PC机的串口直接通过专用的配置连线与路由器控制台端口"Console"相连,在PC计算机上运行终端仿真软件(如Windows 系统下的超有终端),与路由器进行通信,完成路由器的配置。
在物理连接上也可将PC的串口通过专用配置连线与路由器辅助端口AUX直接相连,进行路由器的配置。
2.远程登录(Telnet)方式这是通过操作系统自带的TELNET程序进行配置的(如Windows\Unix\Linux等系统都自带有这样一个远程访问程序)。
如果路由器已有一些基本配置,至少要有一个有效的普通端口,就可通过运行远程登录(Telnet)程序的计算机作为路由器的虚拟终端与路由器建立通信,完成路由器的配置。
通信系统实验网络路由协议配置实验报告

网络路由协议配置实验报告实验目的1.把握RIP动态路由协议的配置和测试方式。
2.把握OSPF路由协议配置和测试方式。
实验原理动态路由协议动态路由是网络中的路由器之间彼此通信,传递路由信息,利用收到的路由信息更新路由器表的进程。
它能实时地适应网络结构的转变。
若是路由更新信息说明发生了网络转变,路由选择软件就会从头计算路由,并发出新的路由更新信息。
这些信息通过各个网络,引发各路由重视新启动其路由算法,并更新各自的路由表以动态地反映网络拓扑转变。
动态路由适用于网络规模大、网络拓扑复杂的网络。
固然,各类动态路由协议会不同程度地占用网络带宽和CPU资源。
依照是不是在一个自治域内部利用,动态路由协议分为内部网关协议(IGP)和外部网关协议(EGP)。
那个地址的自治域指一个具有统一治理机构、统一路由策略的网络。
自治域内部采纳的路由选择协议称为内部网关协议,经常使用的有RIP、OSPF;外部网关协议要紧用于多个自治域之间的路由选择,经常使用的是BGP和BGP-4。
RIP1RIP1是一种内部网关协议。
RIP1要紧用在利用同类技术与大小适度的网络。
因此通过速度转变不大的接线连接,RIP1比较适用于简单的校园网和区域网,但并非适用于复杂网络的情形。
RIP1特点:1.仅和相邻的路由器互换信息。
若是两个路由器之间的通信不通过另外一个路由器,那么这两个路由器是相邻的。
RIP1协议规定,不相邻的路由器之间不互换信息。
2.路由器互换的信息是当前本路由器所明白的全数信息。
即自己的路由表。
3.按固按时刻互换路由信息,如,每隔30秒,然后路由器依照收到的路由信息更新路由表。
4. RIP1消息通过广播地址进行发送,利用UDP 协议的520端口。
5. RIP1是一种有类路由协议,不支持不持续子网设计。
RIP1的气宇制度:距离确实是通往目的站点所需通过的链路数,取值为1~15,数值16表示无穷大。
RIP2RIP2由RIP1 而来,属于RIP1 协议的补充协议,具有RIP1协议的大体特性。
实验五:网络实验室小型局域网的设计

实验五:网络实验室局域网的设计1、实验目的(1)掌握设计网络实验室的技能与方法。
(2)掌握设计网络方案的基本技能和方法。
(3)用visio绘制网络拓扑图2、实验内容为新建的网络实验室设计局域网,进行网络实验室的网络需求分析(如80台计算机,每40一个VLAN,每10台pc连接到百兆交换机上,交换机之间互连。
VLAN间通讯通过三层交换机,80台计算机共享如下服务如ftp/代理/www服务等。
通过三层交换机的上端千兆口连接到网络中心,通过网络中心实现外网的连接)。
给出设计方案和2层、3层交换机上的典型配置(如单臂路由、地址划分)。
3、实验原理三层交换机:具有部分路由器功能的交换机,三层交换机的最重要目的是加快大型局域网内部的数据交换,所具有的路由功能也是为这目的服务的,能够做到一次路由,多次转发。
对于数据包转发等规律性的过程由硬件高速实现,而象路由信息更新、路由表维护、路由计算、路由确定等功能,由软件实现。
三层交换技术就是二层交换技术+三层转发技术。
传统交换技术是在OSI网络标准模型第二层——数据链路层进行操作的,而三层交换技术是在网络模型中的第三层实现了数据包的高速转发,既可实现网络路由功能,又可根据不同网络状况做到最优网络性能。
代理服务器:在Internet上指Proxy Server,即代理服务器,它是一个软件,运行于某台计算机上,使用代理服务器的计算机与Internet交换信息时都先将信息发给代理服务器,由其转发,并且将收到的应答回送给该计算机。
使用代理服务器的目的有:出于安全考虑或局域网的Internet出口有限等。
单臂路由:是将一个物理端口模拟成多个逻辑上的子接口,即在路由器上设置多个逻辑子接口,每个子接口对应于一个VLAN。
由于物理路由接口只有一个,各子接口的数据在物理链路上传递要进行标记封装。
Cisco设备支持ISL和802.1q协议。
华为设备只支持802.1q。
4、实验环境与网络拓扑给出实验用到的设备、仪器、系统开发环境、系统运行环境、开发语言、对应实验环境版本;给出实验用到的网络拓扑结构和设备清单。
广播通信技术实验报告

广播通信技术实验报告一、实验目的本实验旨在通过广播通信技术的探究,深入了解广播通信的原理、应用和实现方法。
通过实际操作,加深对广播通信技术的理解。
二、实验原理广播通信是一种无线通信技术,它通过广播信号的传播,实现对特定区域内所有接收器的信息传递。
广播通信技术主要通过以下三个方面实现:发送端、信号传输、接收端。
2.1 发送端发送端是指进行广播信息发送的设备或站点。
发送端一般由调制器、发射器和天线组成。
调制器负责将要发送的信息转化为电磁波信号,发射器将信号放大并发送至空中,天线负责将信号辐射出去。
2.2 信号传输广播信号传输的方式有两种,分为地面传播和卫星传播。
地面传播主要通过地面无线电波在大气中的传输和反射,通常用于近距离的广播通信;卫星传播则是通过卫星中继站实现信号的传输,广播范围覆盖更广。
2.3 接收端接收端负责接收发送端传来的广播信号,并将信号解调还原为原始信息。
接收端一般由天线、接收器和解调器组成。
天线接收到广播信号后,将信号传输给接收器,接收器将信号放大,解调器则将信号还原为原始信息。
三、实验步骤1. 实验前准备:检查设备和实验材料是否完好。
2. 连接设备:将发送端的天线与发射器连接,并将接收端的天线与接收器连接。
3. 发送广播信号:通过调制器将要发送的信息转化为电磁信号,并通过发射器发送出去。
4. 接收广播信号:接收天线收到广播信号后,将信号传输给接收器,并利用解调器将信号还原为原始信息。
5. 记录实验结果:记录发送端发送的信息和接收端收到的信息,并对比验证信号的传输和还原是否准确。
四、实验结果与分析经过实验操作,我们成功地发送了广播信号,并在接收端正确接收到了相同的信息。
通过实验结果的对比分析,我们可以得出以下结论:1. 广播信号能够成功地在空中传输,并在接收端得到还原。
2. 通过广播通信技术,可以在特定区域内实现信息的广播传递,方便快捷。
五、实验应用与展望广播通信技术在现代社会中有着广泛的应用,如无线电广播、电视广播、卫星通信等。
计算机网络课程设计题目

计算机网络课程设计一. 中小型千兆网吧组建内容及要求:用BOSON软件实现小规模网络的模拟。
熟悉对路由器和交换机的配置命令,调通网络,并通过实例深入理解网络基本工作原理及实现方法。
学会网络构建、日常维护以及管理的方法,使学生掌握在信息化社会建设过程中所必须具备的计算机网络组网和建设所需的基本知识与操作技能,网吧包含100-200台上网的计算机。
二.小型网络的组建通过对网络的具体规划和组建,掌握网络互连设备的使用及工作原理;掌握IP 地址的配置及数据传输过程和路由的选择。
具体要求如下:1.使用模拟仿真软件,构建一个小型网络。
要求使用路由器、交换机等网络互连设备。
根据设计要求,选择网络类型。
2.分配和配置IP地址,要求配置内部网络地址。
3.对交换机、路由器等进行配置。
4.通过使用模拟仿真软件,模拟局域网间的数据通信过程。
5.分析通信过程中出现的问题,并加以解决。
6. 写出课程设计报告:设计目的、设计内容、设计方案、拓扑图、设备选型、方案报价、子网划分等内容。
(1)企业网络工程(2)银行网络工程(3)医院网络工程(4)校园网网络工程(5)大型机场信息网络工程(6)邮电综合管理信息网(7)某航空公司网络系统建设(8)某市宽带信息网络(9)证券交易网络系统(10)学校以太网网络建设三.Ping程序的设计与实现设计的目的是使学生掌握网络层协议的原理及实现方法。
设计内容,在给定的Ping程序的基础上做如下功能扩充:●-h 显示帮助信息●-b 允许ping一个广播地址,只用于IPv4●-t 设置ttl值,只用于IPv4●-q 安静模式。
不显示每个收到的包的分析结果,只在结束时,显示汇总结果Ping命令的基本描述Ping的操作是向某些IP地址发送一个ICMP Echo消息,接着该节点返回一个ICMP Echo reply消息。
ICMP消息使用IP头作为基本控制。
IP头的格式如下0 1 2 30 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Version| IHL |Type of Service| Total Length |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Identification |Flags| Fragment Offset |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Time to Live | Protocol | Header Checksum |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Source Address |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Destination Address |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Version=4IHL Internet头长Type of Service = 0Total Length IP包的总长度Identification, Flags, Fragment Offset 用于IP包分段Time to Live IP包的存活时长Protocol ICMP = 1Addresses 发送Echo消息的源地址是发送Echo reply消息的目的地址,相反,发送Echo 消息的目的地址是发送Echo reply消息的源地址。
调幅接收设计实验报告

二极管导通,对C充电,τ充=RDC。因为RD很小,所以τ充很小,vo≈vs
的其余时间(φ>90o)
二极管截止,C经R放电,τ放=RC。因为R很大,所以τ放很大,C上电压下降不多,仍有:vo≈vs
过程循环往复,C上获得与包络(调制信号)相一致的电压波形,有很小的起伏。故称包络检波。
高频的课程设计结束了,这一周一直在上网查资料,忙着翻阅参考书。反复修改自己的
课程设计。感觉收获很大。这次我在课程设计中所做的课题是调幅接收机。一个很典型的高频电路。同时它也比较全面的运用了高频课程中所学到的知识:高频谐振回路,低频功率放大器,晶体振荡器,同步检波,混频电路。涉及的知识点相当多。
在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找大量资料,
LC谐振放大中选用功耗小的2N2222型三极管进行两级放大,LC谐振部分为放大器的负载;电压跟随采用集成运放OPБайду номын сангаас355,以实现电路阻抗的良好匹配;为了给放大器工作提供稳压电源,采用LM317稳压芯片设计了一个电源。经测试,放大器低功耗、高增益,具有良好的选择性。
图4-5高频谐振放大器电路图
图4-6高频谐振放大器方针结果
关键字:振荡 混频 检波 谐振 放大
一、前言
信息传递是人类社会生活的重要内容,没有通信,人类社会是不可想象的。近年来,电子工业的发展非常惊人,当然这些进步都成了人类社会不可缺少的东西,1937年莫尔斯发明的有线电报开创了利用电传递信息的新时代。1876年贝尔发明的电话已成为我们日常生活中通信的重要工具,1918年,调幅无线广播调幅接收机的问世;1936年,商业电视广播开播。伴随着人类的文明,社会的进步和科学技术的发展,电信技术也以一日千里的速度飞速发展,然而无线通信在现在的生活中更重要,我们常用的手机,无线电话还有各种电器的遥控器等,大到航天小到玩具都离不开发射和接收设备。调幅接收是目前应用最广泛的接收方式之一。
通信系统综合实验报告

通信系统综合实验报告实验一无线多点组网一、实验步骤1、组建树型网络组建5个节点的树形网络,阐述组建的过程。
2、进行数据传输节点之间进行通信,并记录路由信息,最后,进行组播和广播,观察其特点。
二、实验过程1、组建树型网络(1).网络1A、首先在配置中寻找到其他4个节点的地址信息。
自身地址:00:37:16:00:A5:46B、查找设备C、建立连接组网假设参加组网的共有5个BT设备,称为a、b、c、d、e。
首先由一个设备(例如b)发起查询,如果找到多个设备,则任选其二(例如d、e)主动与其建链。
在这个阶段,b、d、e构成一个微微网,b为主设备(M),d、e为从设备(S)。
注意在微微网中对处于激活状态的从设备的个数限制为2;而某个设备一旦成为从设备(即d、e),它就不能再被其它设备发现,也不能查询其它设备或与其它设备建链。
再由另外一个设备(a)发起查询,查询到设备b和设备c,再主动链接。
(1).网络1组建的网络图(1)(2)网络2同理,首先,在配置中寻找到其他4个节点的地址信息。
然后查找设备,再建立连接。
由地址为00:37:16:00:A5:42的节点连接00:37:16:00:A5:46和00:37:16:00:A5:43,再由00:37:16:00:A5:47连接00:37:16:00:A5:42和00:37:16:00:A5:45,最后组成网络。
组建的网络图(2)2.进行数据传输(1)点对点发送信息例如,对于组建的网络2.图中显示的是:00:37:16:00:A5:4A对00:37:16:00:A5:43的路由,途中经过了00:37:16:00:A5:47,00:37:16:00:A5:42由此可见,简单拓扑结构,路由具有唯一性。
(2)组播与广播1. 广播:由任何一个节点设备向网络内的所有其他节点发送同一消息,观察其发送的目标地址以及数据交换过程。
在这种情况下的路由过程与两个节点间数据单播的过程有何不同。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机与信息学院《计算机网络系统实践》报告2009 年 9 月设计题目:广播通信设计学生姓名: 学 号:专业班级:计算机06-4班合肥工业大学课程设计任务书姓名学号班级计算机06-4班设计题目广播通信设计成绩课程设计主要内容1.掌握广播通信技术;2.了解基于Winsock API的消息机制和编程应用方法;3.了解Windows SDK编程架构。
4.WinSock API编程,实现局域网消息广播的实用程序;5.通过查阅资料,简述单播、广播、多播的区别和联系,以及各自的优缺点和适应范围。
指导教师评语签名:200 年月日一、设计要求1.WinSock API编程,实现局域网消息广播的实用程序;2.通过查阅资料,简述单播、广播、多播的区别和联系,以及各自的优缺点和适应范围。
二、开发环境与工具Microsoft Visual Studio 2008.Windows XP SP3.三、设计原理Socket接口是网络编程(通常是TCP/IP协议,也可以是其他协议)的API。
最早的Socket接口是Berkeley接口,在Unix操作系统中实现。
WinSock 也是一个基于Socket模型的API,在Microsoft Windows操作系统类中使用。
它在Berkeley接口函数的基础之上,还增加了基于消息驱动机制的Windows扩展函数。
Winscok1.1只支持TCP/IP网络,WinSock2.0增加了对更多协议的支持。
单播:网络节点之间的通信就好像是人们之间的对话一样。
如果一个人对另外一个人说话,那么用网络技术的术语来描述就是“单播”,此时信息的接收和传递只在两个节点之间进行。
多播:“多播”也可以称为“组播”,在网络技术的应用并不是很多,网上视频会议、网上视频点播特别适合采用多播方式。
因为如果采用单播方式,逐个节点传输,有多少个目标节点,就会有多少次传送过程,这种方式显然效率极低,是不可取的;如果采用不区分目标、全部发送的广播方式,虽然一次可以传送完数据,但是显然达不到区分特定数据接收对象的目的。
采用多播方式,既可以实现一次传送所有目标节点的数据,也可以达到只对特定对象传送数据的目的。
广播:“广播”在网络中的应用较多,如客户机通过DHCP自动获得IP地址的过程就是通过广播来实现的。
但是同单播和多播相比,广播几乎占用了子网内网络的所有带宽。
四、系统功能描述及软件模块划分该软件能实现的功能:该软件主要实现了局域网聊天功能。
通过定义一个消息结构体,把局域网通信中必要的信息包含进来便于操作。
发送的消息包含了自己的IP地址和名称,以及类型,程序中有一个线程专门接收并处理各种不同的消息。
在同一个局域网中运行程序通过发送组播消息可以发现彼此,接收到对方的消息后就把对方加入好友列表中。
之后就可以选择一个好友发送消息,或者群发消息。
每个用户上线时都会广播自己上线的消息,其他用户收到后更新好友列表,把其IP和对应的用户名添加到好友列表中;下线时广播自己下线的消息,其他用户把其IP和用户名从好友列表中删除。
软件的模块包括:套接字管理模块和主程序中的消息循环模块。
五、设计步骤定义的一个消息类型和结构为:enum SendType{LOAD,//上线REFRESH_SELF,//刷新NOTIFY_ONE_I_EXIST,//回应消息表示自己存在CHANGE_NAME,//修改名称SEND_MSG_TO_ONE, //向某个特定IP发送消息SEND_MSG_TO_ALL, //广播消息UNLOAD//下线};class MessageStruct{public:MessageStruct(){type = LOAD; msg_name[0] = '\0'; ip[0] = '\0'; dialog[0] = '\0';}SendType type;char msg_name[32];char ip[32];char dialog[8192];};套接字管理模块的核心代码如下:bool SocketManger::InitSocket(unsigned short port){//初始化套接字m_socket = socket(AF_INET ,SOCK_DGRAM ,0);if (INVALID_SOCKET == m_socket){AfxMessageBox("Create socket failed!",MB_OK);return false;}SOCKADDR_IN socketSrv;socketSrv.sin_family = AF_INET;socketSrv.sin_port = htons(port);socketSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);if (SOCKET_ERROR == bind(m_socket, (SOCKADDR*)&socketSrv,sizeof(SOCKADDR))){AfxMessageBox("Bind socket failed!");closesocket(m_socket);return false;}return true;}bool SocketManger::JoinGroupCast(const std::string& multiIp){//加入组播组struct ip_mreq ipmr;int len = sizeof(ipmr);ipmr.imr_multiaddr.s_addr = inet_addr(multiIp.c_str());ipmr.imr_interface.s_addr = htonl(INADDR_ANY);setsockopt(m_socket, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char*)&ipmr, len);return true;}消息循环的主要代码如下:DWORD WINAPI CChaChaChatDlg::RecvProc(LPVOID lpParameter){CChaChaChatDlg *pDlg = ((ParameterToThread*)lpParameter)->pDlg;HWND hwnd = ((ParameterToThread*)lpParameter)->hwnd;SOCKADDR_IN addrFrom;int len = sizeof(SOCKADDR);MessageStruct *pMessage = new MessageStruct;int reval;char nameTemp[32] = {0};char ip[32] = {'\0'};char msg[8192] = {'\0'};char buff[8300] = {'\0'};CString ownIp;CString receivedIp = ip;while(true){reval =recvfrom(SocketManger::m_socket,(char*)pMessage,sizeof(MessageStruct),0,(SOC KADDR*)&addrFrom,&len);if(SOCKET_ERROR == reval){break;}SendType type = pMessage->type;strncpy(nameTemp,pMessage->msg_name,sizeof(nameTemp)-1);strncpy(ip,pMessage->ip,sizeof(ip)-1);strncpy(msg,pMessage->dialog,sizeof(msg)-1);switch(type){case LOAD:ownIp = pDlg->GetOwnIp();if (ip == ownIp)//上线通知自己不做处理{break;}pDlg->PushNameToMap(ip,nameTemp);pDlg->UpdateTheList();::PostMessage(hwnd,WM_RECVDATA_NOTIFY_EXIST,0,(LPARAM)&addrFrom);break;case REFRESH_SELF:ownIp = pDlg->GetOwnIp();if (ip == ownIp)//上线通知自己不做处理{break;}::PostMessage(hwnd,WM_RECVDATA_ANSWER_REFRESH,0,(LPARAM)&addrFrom);break;case CHANGE_NAME:pDlg->ChangeNameFromMap(ip,nameTemp);pDlg->UpdateTheList();break;case NOTIFY_ONE_I_EXIST:pDlg->PushNameToMap(ip,nameTemp);pDlg->UpdateTheList();break;case SEND_MSG_TO_ONE:sprintf(buff,"[%s 对你说:]\r\n%s\n",nameTemp, msg);::PostMessage(hwnd,WM_RECVDATA_UPDATE_TEXT,0,(LPARAM)buff);break;case SEND_MSG_TO_ALL:ownIp = pDlg->GetOwnIp();if (ip == ownIp)//上线通知自己不做处理{break;}sprintf(buff,"[%s 对所有人说:]\r\n%s\n",nameTemp, msg);::PostMessage(hwnd,WM_RECVDATA_UPDATE_TEXT,0,(LPARAM)buff);break;case UNLOAD:pDlg->QuitNameFormMap(ip);pDlg->UpdateTheList();break;//quit map -> update the listdefault: break;}}delete lpParameter;return 0;}发送信息模块:void CChaChaChatDlg::OnBnClickedButtonSend()//send to ****{int val = m_toAll.GetCheck();GetDlgItemText(IDC_EDIT_INPUT,m_msgInput);char msgBuff[8300] = {'\0'};MessageStruct * pMsgStruct = new MessageStruct;strcpy(pMsgStruct->msg_name,m_userName.GetBuffer(m_userName.GetLength())) ;if (m_msgInput == ""){AfxMessageBox("不要发送空信息!");return;}if (m_msgInput.GetLength() > 8000){AfxMessageBox("字数太多了,不要超过字!");return;}strcpy(pMsgStruct->dialog,m_msgInput.GetBuffer(m_msgInput.GetLength()));SOCKADDR_IN addrTo;addrTo.sin_family = AF_INET;addrTo.sin_port = htons(9876);if (1 == val)//组播{pMsgStruct->type = SEND_MSG_TO_ALL;strcpy(pMsgStruct->ip,m_ip.GetBuffer(m_ip.GetLength()));addrTo.sin_addr.S_un.S_addr = inet_addr("234.5.6.7");sprintf(msgBuff,"[你对大家说:]\r\n%s\n",pMsgStruct->dialog);OnRecvDataUpdateText(0,(LPARAM)msgBuff);}else if (0 == val && m_destIp != "")//单播{pMsgStruct->type = SEND_MSG_TO_ONE;addrTo.sin_addr.S_un.S_addr = inet_addr(m_destIp);//ip要加" " 吗??sprintf(msgBuff,"[你对%s 说:]\r\n%s\n", m_destName,pMsgStruct->dialog);OnRecvDataUpdateText(0,(LPARAM)msgBuff);}else{delete pMsgStruct;AfxMessageBox("选择一个聊天对象!");return;}sendto(SocketManger::m_socket,(char*)pMsgStruct, sizeof(MessageStruct), 0, (SOCKADDR*)&addrTo, sizeof(SOCKADDR));delete pMsgStruct;SetDlgItemText(IDC_EDIT_INPUT,"");}其他代码:void CChaChaChatDlg::UpdateTheList(){//更新好友列表m_listUsers.DeleteAllItems();for(friendIter iter= friendsMap.begin(); iter!=friendsMap.end(); ++iter) {std::string strIp = (*iter).first;std::string strName = (*iter).second;m_listUsers.InsertItem(0,strName.c_str());m_listUsers.SetItemText(0,1,strIp.c_str());}}void CChaChaChatDlg::ChangeNameFromMap(std::string strIp, std::string strName) {//修改列表中名称friendIter where;where = friendsMap.find(strIp);std::string oldName = (*where).second;if ( where == friendsMap.end())return;else{friendsMap.erase( where );}friendsMap.insert(std::make_pair(strIp,strName));//提示:std::string notice = "上一动作: [ " + oldName + " ] 将名字改为了[ " + strName +" ]";SetDlgItemText(IDC_NOTICE,notice.c_str());}void CChaChaChatDlg::PushNameToMap(std::string strIp, std::string strName) {//添加好友到列表friendsMap.insert(std::make_pair(strIp,strName));std::string notice = "上一动作: [" + strName + " ] 上线了!";SetDlgItemText(IDC_NOTICE,notice.c_str());}void CChaChaChatDlg::QuitNameFormMap(std::string strIp){//从列表删除好友friendIter where;where = friendsMap.find(strIp);if ( where == friendsMap.end())return;else{std::string notice = "上一动作: [" + where->second + " ] 下线了!";SetDlgItemText(IDC_NOTICE,notice.c_str());friendsMap.erase( where );}}六、设计结果登录界面如下:程序主界面如下:修改昵称界面:本程序把整个局域网当成一个聊天室,如果可以在同一个局域网中建立多个聊天室相信会更具有实用性。