通信原理实验报告

合集下载

通信原理大型实验课程设计实验报告

通信原理大型实验课程设计实验报告

通信原理⼤型实验课程设计实验报告通信原理⼤型实验课程设计实验报告实验⼀基于A律⼗三折和u律⼗五折的PCM编解码设计要求:1、掌握Matlab的使⽤,掌握Simulink中建⽴通信模型的⽅法。

2、了解PCM编码的原理及在Simulink中的具体实现模块。

3、掌握如何观察⽰波器,来分析仿真模型的误差实验内容:1、设计⼀个A律13折线近似的PCM编解码器模型,能够对取值在[-1;1] 内的归⼀化信号样值进⾏编码。

建⽴PCM串⾏传输模型,并在传输信道中加⼊指定错误概率的随机误码。

在解码端信道输出的码流经过串并转换后送⼊PCM解码,之后输出解码结果并显⽰波形。

仿真采样率必须是仿真模型中最⾼信号速率的整数倍,这⾥模型中信道传输速率最⾼,为64kbps,故设置仿真步进为1/64000 秒。

信道错误⽐特率设为0.01,以观察信道误码对PCM传输的影响。

仿真结果波形如图所⽰,传输信号为幅度是1,频率是200Hz正弦波,解码输出存在延迟。

2、设信道是⽆噪的。

压缩扩张⽅式为u 律的,参数u=255 。

试研究输⼊信号电平与PCM量化信噪⽐之间的关系。

以正弦波作为测试信号。

PCM解码输出信号与原信号相减得出量化噪声信号,采⽤⽅差统计模块统计输出量化噪声以及原信号的功率,计算出信噪⽐。

其中参数mu设置为255。

实验结果:1、PCM编解码的原理将模拟信号的抽样量化值变换成为代码称为脉冲编码调制(PCM)2、A律编码⽅式的原理⾮均匀量化等价为对输⼊信号进⾏动态范围压缩后再进⾏均匀量化。

PCM编码模块:PCM解码模块:仿真模型:主要参数设置:“Saturation”作为限幅器,将输⼊信号幅度值限制在PCM编码的定义范围内[-1,1];“Relay”模块的门限设置为0;零阶保持器采样时间间隔为1秒,量化器模块“Quantizer”的量化间隔为1。

可见,发送信号为常数18.6时,零阶保持器每隔1秒钟采样⼀次,量化器将采样输出结果进⾏四舍五⼊量化,得到整数值19,“Integer to Bit Converter”模块的转换⽐特数设置为8,进⾏8⽐特转换。

通信原理抽样定理实验报告

通信原理抽样定理实验报告

通信原理实验(五)实验一抽样定理实验项目一、抽样信号观测及抽样定理实验1、观测并记录抽样前后的信号波形,分别观测music和抽样输出由分析知,自然抽样后的结果如图,很明显抽样间隔相同,且抽样后的波形在其包络严格被原音乐信号所限制加权,与被抽样信号完全一致。

2、观测并记录平顶抽样前后信号的波形。

此结果为平顶抽样结果,仔细观察可发现与上一实验中的自然抽样有很大差距,即相同之处,其包络也由原信号所限制加权,但是在抽样信号的每个频率分量呈矩形,顶端是平的。

3、观测并对比抽样恢复后信号与被抽样信号的波形,并以100HZ为步进,减小A-OUT的频率,比较观测并思考在抽样脉冲频率为多少的情况下恢复信号有失真。

(2)7.7KHZ在频率为9HZ 时的波形如上图,低通滤 波器恢复出的信号与原信号基本一致, 只是相位有了延时,约1/4个Ts ; 逐渐减小抽样频率可知在7.7KHZ 左右, 恢复信号出现了幅度的失真,且随着fs 的减小,失真越大。

上述现象验证了抽样定理,即,在信号 的频率一定时,采样频率不能低于被采 样信号的2倍,否则将会出现频谱的混 叠,导致恢复出的信号严重失真。

实验二PCM 编译码实验实验项目一 测试W681512的幅频特性1、将信号源频率从50HZ 到4000HZ 用示波器接模块21的音频输出,观测信号 的幅频特性。

⑴、4000HZ(2)、3500HZ(1)9.0KHZ(3)7.0KHZ(3)120HZ⑷50HZ在实验中仔细观察结果,可知,当信号源的频率由4000HZ不断下降到3000HZ 的过程中,信号的频谱幅度在不断地增加;在3000HZ~1500HZ的过程中,信号的幅度在一定范围内变化,但是没有特别大的差距;在1500HZ~50HZ的过程中,信号的幅度有极为明显的下降。

实验项目二PCM编码规则实验1、以FS为触发,观测编码输入波形。

示波器的DIV档调节为100微秒图中分别为输入被抽样信号和抽样脉冲,观察可发现正弦波与编码对应。

通信原理实验报告

通信原理实验报告

通信原理实验报告实验一抽样定理实验二 CVSD编译码系统实验实验一抽样定理一、实验目的所谓抽样。

就是对时间连续的信号隔一定的时间间隔T 抽取一个瞬时幅度值(样值),即x(t)*s(t)=x(t)s(t)。

在一个频带限制在(0,f h)内的时间连续信号f(t),如果以小于等于1/(2 f h)的时间间隔对它进行抽样,那么根据这些抽样值就能完全恢复原信号。

抽样定理告诉我们:如果对某一带宽有限的时间连续信号(模拟信号)进行抽样,且抽样速率达到一定数值时,那么根据这些抽样值就能准确地还原信号。

这就是说,若要传输模拟信号,不一定要传输模拟信号本身,可以只传输按抽样定理得到的抽样值。

二、功能模块介绍1.DDS 信号源:位于实验箱的左侧(1)它可以提供正弦波、三角波等信号,通过连接P03 测试点至PAM 脉冲调幅模块的32P010 作为脉冲幅度调制器的调制信号x(t)。

抽样脉冲信号则是通过P09 测试点连至PAM 脉冲调幅模块。

(2)按下复合式按键旋钮SS01,可切换不同的信号输出状态,例如D04D03D02D01=0010对应的是输出正弦波,每种LED 状态对应一种信号输出,具体实验板上可见。

(3)旋转复合式按键旋钮SS01,可步进式调节输出信号的频率,顺时针旋转频率每步增加100Hz,逆时针减小100Hz。

(4)调节调幅旋钮W01,可改变P03 输出的各种信号幅度。

2.抽样脉冲形成电路模块它提供有限高度,不同宽度和频率的抽样脉冲序列,可通过P09 测试点连线送到PAM 脉冲调幅模块32P02,作为脉冲幅度调制器的抽样脉冲s(t)。

P09 测试点可用于抽样脉冲的连接和测量。

该模块提供的抽样脉冲频率可通过旋转SS01 进行调节,占空比为50%。

3.PAM 脉冲调幅模块它采用模拟开关CD4066 实现脉冲幅度调制。

抽样脉冲序列为高电平时,模拟开关导通,有调制信号输出;抽样脉冲序列为低电平,模拟开关断开,无信号输出。

《通信原理实验报告》实验报告

《通信原理实验报告》实验报告

《通信原理实验报告》内容:实验一、五、六、七实验一数字基带信号与AMI/HDB3编译码一、实验目的1、掌握单极性码、双击行码、归零码、非归零码等基带信号波形特点。

2、掌握AMI、HDB3码的编码规则。

3、掌握从HDB3码信号中提取位同步信号的方法。

4、掌握集中插入帧同步码同步时分复用信号的帧结构特点。

二、实验内容及步骤1、用开关K1产生代码X1110010,K2,K3产生任意信息代码,观察NRZ码的特点为不归零型且为原码的表示形式。

2、将K1,K2,K3置于011100100000110000100000态,观察对应的AMI码和HDB3码为:HDB3:0-11-1001-100-101-11001-1000-10AMI :01-1100-1000001-100001000003、当K4先置左方AMI端,CH2依次接AMI/HDB3模拟的DET,BPF,BS—R和NRZ,观察它们的信号波形分别为:BPF为方波,占空比为50%,BS—R为三角波,NRZ为不归零波形。

DET是占空比等于0.5的单极性归零信号。

三、实验思考题1、集中插入帧同步码同步时分复用信号的帧结构有何特点?答:集中插入法是将标志码组开始位置的群同步码插入于一个码组的前面。

接收端一旦检测到这个特定的群同步码组就马上知道了这组信息码元的“头”。

所以这种方法适用于要求快速建立同步的地方,或间断传输信息并且每次传输时间很短的场合。

检测到此特定码组时可以利用锁相环保持一定的时间的同步。

为了长时间地保持同步,则需要周期性的将这个特定的码组插入于每组信息码元之前。

2、根据实验观察和纪录回答:(1)不归零码和归零码的特点是什么?(2)与信源代码中的“1”码相对应的AMI 码及HDB3 码是否一定相同?答:1)不归零码特点:脉冲宽度τ等于码元宽度Ts归零码特点:τ<Ts2)与信源代码中的“1”码对应的AMI 码及HDB3 码不一定相同。

因信源代码中的“1”码对应的AMI 码“1”、“-1”相间出现,而HDB3 码中的“1”,“-1”不但与信源代码中的“1”码有关,而且还与信源代码中的“0”码有关。

通信原理信号源实验报告(共五篇)

通信原理信号源实验报告(共五篇)

通信原理信号源实验报告(共五篇)第一篇:通信原理信号源实验报告信号源实验实验报告(本实验包括CPLD 可编程数字信号发生器实验与模拟信号源实验,共两个实验。

)一、实验目的1、熟悉各种时钟信号的特点及波形。

2、熟悉各种数字信号的特点及波形。

3、熟悉各种模拟信号的产生方法及其用途。

4、观察分析各种模拟信号波形的特点。

二、实验内容 1、熟悉 CPLD 可编程信号发生器各测量点波形。

2、测量并分析各测量点波形及数据。

3、学习CPLD 可编程器件的编程操作。

4、测量并分析各测量点波形及数据。

5、熟悉几种模拟信号的产生方法,了解信号的来源、变换过程与使用方法。

三、实验器材 1、信号源模块一块 2、连接线若干 3、20M 双踪示波器一台四、实验原理((一))D CPLD 可编程数字信号发生器实验实验原理CPLD 可编程模块用来产生实验系统所需要的各种时钟信号与各种数字信号。

它由 CPLD可编程器件 ALTERA 公司的 EPM240T100C5、下载接口电路与一块晶振组成。

晶振JZ1 用来产生系统内的32、768MHz 主时钟。

1、CPLD 数字信号发生器包含以下五部分: 1)时钟信号产生电路将晶振产生的32、768MH Z 时钟送入CPLD内计数器进行分频,生成实验所需的时钟信号。

通过拨码开关 S4 与 S5 来改变时钟频率。

有两组时钟输出,输出点为“CLK1”与“CLK2”,S4控制“CLK1”输出时钟的频率,S5 控制“CLK2”输出时钟的频率。

2)伪随机序列产生电路通常产生伪随机序列的电路为一反馈移存器。

它又可分为线性反馈移存器与非线性反馈移存器两类。

由线性反馈移存器产生出的周期最长的二进制数字序列称为最大长度线性反馈移存器序列,通常简称为 m 序列。

以 15 位 m 序列为例,说明 m 序列产生原理。

在图 1-1 中示出一个 4 级反馈移存器。

若其初始状态为(0 1 2 3, , ,a a a a)=(1,1,1,1),则在移位一次时 1 a 与 0 a 模 2 相加产生新的输入41 1 0 a =⊕=,新的状态变为(1 2 3 4, , , a a a a)=(0,1,1,1),这样移位15 次后又回到初始状态(1,1,1,1)。

通信原理实验_实验报告

通信原理实验_实验报告

一、实验名称通信原理实验二、实验目的1. 理解通信原理的基本概念和原理;2. 掌握通信系统中的调制、解调、编码和解码等基本技术;3. 培养实际操作能力和分析问题能力。

三、实验内容1. 调制与解调实验(1)实验目的:验证调幅(AM)和调频(FM)调制与解调的基本原理;(2)实验步骤:1. 准备实验设备:调幅调制器、调频调制器、解调器、示波器、信号发生器等;2. 设置调制器参数,生成AM和FM信号;3. 将调制信号输入解调器,观察解调后的信号波形;4. 分析实验结果,比较AM和FM调制信号的特点;(3)实验结果与分析:通过实验,观察到AM和FM调制信号的特点,验证了调制与解调的基本原理。

2. 编码与解码实验(1)实验目的:验证数字通信系统中的编码与解码技术;(2)实验步骤:1. 准备实验设备:编码器、解码器、示波器、信号发生器等;2. 设置编码器参数,生成数字信号;3. 将数字信号输入解码器,观察解码后的信号波形;4. 分析实验结果,比较编码与解码前后的信号特点;(3)实验结果与分析:通过实验,观察到编码与解码前后信号的特点,验证了数字通信系统中的编码与解码技术。

3. 信道模型实验(1)实验目的:验证信道模型对通信系统性能的影响;(2)实验步骤:1. 准备实验设备:信道模型仿真软件、信号发生器、示波器等;2. 设置信道模型参数,生成模拟信号;3. 将模拟信号输入信道模型,观察信道模型对信号的影响;4. 分析实验结果,比较不同信道模型下的信号传输性能;(3)实验结果与分析:通过实验,观察到不同信道模型对信号传输性能的影响,验证了信道模型在通信系统中的重要性。

4. 通信系统性能分析实验(1)实验目的:分析通信系统的性能指标;(2)实验步骤:1. 准备实验设备:通信系统仿真软件、信号发生器、示波器等;2. 设置通信系统参数,生成模拟信号;3. 仿真通信系统,观察系统性能指标;4. 分析实验结果,比较不同参数设置下的系统性能;(3)实验结果与分析:通过实验,观察到不同参数设置对通信系统性能的影响,验证了通信系统性能分析的重要性。

通信原理硬件实验报告

通信原理硬件实验报告

通信原理硬件实验报告通信原理硬件实验报告一、引言通信原理是现代通信领域的重要基础课程,通过实验可以更好地理解和掌握通信原理的基本原理和技术。

本次实验主要涉及通信原理的硬件实验,旨在通过搭建实际的通信系统,验证理论知识,并进一步加深对通信原理的理解。

二、实验目的本次实验的主要目的是通过搭建一个简单的通信系统,实现信号的传输和接收,并对实验结果进行分析和验证。

具体目标如下:1. 理解调制和解调的基本原理;2. 掌握通信系统中常用的调制和解调技术;3. 熟悉通信信号的传输和接收过程;4. 进一步巩固通信原理的理论知识。

三、实验原理1. 调制原理调制是指将要传输的信息信号(基带信号)通过一定的调制方式转换成适合传输的信号(载频信号)。

常见的调制方式有调幅(AM)、调频(FM)和调相(PM)等。

2. 解调原理解调是指将接收到的调制信号还原为原始的信息信号。

解调过程与调制过程相反,常见的解调方式有包络检波、相干解调和频率解调等。

3. 通信信号的传输和接收通信信号的传输和接收过程包括信号的发射、传输和接收三个环节。

发射端通过调制将信息信号转换为适合传输的信号,然后通过信道传输到接收端,接收端再通过解调将信号还原为原始的信息信号。

四、实验步骤1. 搭建实验平台首先,搭建实验所需的硬件平台,包括信号发生器、调制解调器、示波器等设备,确保设备连接正确并稳定。

2. 设置信号参数根据实验要求,设置信号发生器的频率、幅度和调制深度等参数,以及调制解调器的解调方式和解调增益等参数。

3. 进行调制实验将待传输的信息信号输入到调制解调器的调制端口,观察调制后的信号波形,并通过示波器进行实时监测和记录。

4. 进行解调实验将调制后的信号输入到调制解调器的解调端口,观察解调后的信号波形,并通过示波器进行实时监测和记录。

5. 分析和验证实验结果通过对实验数据的分析和对比,验证实验结果是否与理论知识相符,并进一步探讨实验中可能存在的误差和改进方法。

通信原理实验报告答案(3篇)

通信原理实验报告答案(3篇)

第1篇一、实验目的1. 理解通信系统的基本原理和组成。

2. 掌握通信系统中的调制、解调、编码、解码等基本技术。

3. 熟悉实验仪器的使用方法,提高动手能力。

4. 通过实验,验证通信原理理论知识。

二、实验原理通信原理实验主要涉及以下内容:1. 调制与解调:调制是将信息信号转换为适合传输的信号,解调是将接收到的信号还原为原始信息信号。

2. 编码与解码:编码是将信息信号转换为数字信号,解码是将数字信号还原为原始信息信号。

3. 信号传输:信号在传输过程中可能受到噪声干扰,需要采取抗干扰措施。

三、实验仪器与设备1. 实验箱:包括信号发生器、调制解调器、编码解码器等。

2. 信号源:提供调制、解调所需的信号。

3. 传输线路:模拟信号传输过程中的衰减、反射、干扰等现象。

四、实验内容与步骤1. 调制实验(1)设置调制器参数,如调制方式、调制频率等。

(2)将信号源信号输入调制器,观察调制后的信号波形。

(3)调整解调器参数,如解调方式、解调频率等。

(4)将调制信号输入解调器,观察解调后的信号波形。

2. 解调实验(1)设置解调器参数,如解调方式、解调频率等。

(2)将调制信号输入解调器,观察解调后的信号波形。

(3)调整调制器参数,如调制方式、调制频率等。

(4)将解调信号输入调制器,观察调制后的信号波形。

3. 编码与解码实验(1)设置编码器参数,如编码方式、编码长度等。

(2)将信息信号输入编码器,观察编码后的数字信号。

(3)设置解码器参数,如解码方式、解码长度等。

(4)将编码信号输入解码器,观察解码后的信息信号。

4. 信号传输实验(1)设置传输线路参数,如衰减、反射等。

(2)将信号源信号输入传输线路,观察传输过程中的信号变化。

(3)调整传输线路参数,如衰减、反射等。

(4)观察传输线路参数调整对信号传输的影响。

五、实验结果与分析1. 调制实验:调制后的信号波形与原信号波形基本一致,说明调制和解调过程正常。

2. 解调实验:解调后的信号波形与原信号波形基本一致,说明解调过程正常。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学生学号0121410880117 实验课成绩学生实验报告书实验课程名称通信原理开课学院计算机科学与技术学院指导教师姓名刘维学生姓名陈鑫宇学生专业班级软件工程14012015-- 2016学年第 2 学期实验课程名称:______通信原理_________实验项目名称采用Winsock在有线局域网上的点-点通信实验成绩实验者陈鑫宇专业班级软件1401 组别同组者叶旺实验日期年月日一部分:实验预习报告(包括实验目的、意义,实验基本原理与方法,主要仪器设备及耗材,实验方案与技术路线等)实验目的与要求1.“采用Winsock在有线局域网上的点-点通信”2.熟悉VB6.0的控件和界面设计,进而熟悉Winsock的有关控件及编程方法。

3.在了解所用的两个工作站和服务器的IP地址后,采用VB6.0的控件和Winsock控件编写并调试在有线局域网上的点-点通信程序。

4.具有点对点通信功能,任意客户端之间能够发送消息。

编译语言与环境1.编程语言C/C++等均可;本次实验采用C++语言版本2.安装vs2015或更高版本的Windows系统pc机第二部分:实验过程记录(可加页)(包括实验原始数据记录,实验现象记录,实验过程发现的问题等)服务器ip地址为192.168.1.110客户端发送的信息成功传输到了服务器并显示了出来,第三部分结果与讨论(可加页)一、实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等)打开服务器程序,然后点击开始通信按钮,打开客户端程序在客户端输入数据,数据成功从客户端传输到了服务器端,并成功显示了出来,实验成功。

二、小结、建议及体会通过本次实验能够感受到网络在实际当中的运用,使我对网络编程有了更深的概念。

同时让我发现自己知识结构的欠缺。

虽然基本功能已经实现,但还是存在很多不稳定的问题尚待解决。

此次实验是对Socket的一个应用,让我更深的了解了Socket函数的作用及使用方法。

实验过程中遇到了很多的问题,例如:程序只能通信一次。

刚开始我以为建立的socket套接口只要建立一次并更新连接地址就可以多次使用。

当初不知道问题存在的在于这,在程序加入很多错误报告代码,发现再客户端再次connect的时候返回负值。

在网上查看很多相关代码之后,发现问题所在,把建立socket的代码写进客户端的循环体中,每次通信都重新建立socket套接口就可以了。

关键代码示例:服务器端:// server.cpp : 实现文件//#define_CRT_SECURE_NO_WARNINGS#include"stdafx.h"#include"通信实验.h"#include"server.h"#include"afxdialogex.h"#include<WinSock2.h>#include<stdio.h>#pragma comment(lib,"ws2_32.lib")static int num = 0;// server 对话框IMPLEMENT_DYNAMIC(server, CDialogEx)server::server(CWnd* pParent/*=NULL*/): CDialogEx(IDD_DIALOG1, pParent){}server::~server(){}void server::DoDataExchange(CDataExchange* pDX){CDialogEx::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(server, CDialogEx)ON_BN_CLICKED(IDC_BUTTON1, &server::OnBnClickedButton1) ON_WM_TIMER()END_MESSAGE_MAP()// server 消息处理程序void server::OnBnClickedButton1(){// TODO: 在此添加控件通知处理程序代码//SetTimer(1, 50000, NULL);int err;//错误信息int len;char sendBuf[100];//发送至客户端的字符串char recvBuf[100];//接受客户端放回的字符串SOCKET sockServer;//服务器端SocketSOCKADDR_IN addrServer;//服务器端地址SOCKET sockClient;//客户端SocketSOCKADDR_IN addrClient;//客户端地址WSADATA wsaData;//winsock结构体WORD wVersinRequested;//winsock版本//配置Windows Socket版本wVersinRequested = MAKEWORD(2, 2);//初始化Windows Socketerr = WSAStartup(wVersinRequested, &wsaData);if (err != 0){//启动错误,程序结束return;}/*确认WinSock DLL支持2.2*/if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) {//启动错误WSACleanup();//终止WinSock 2 DLL的使用return;}//定义服务器端socketsockServer = socket(AF_INET, SOCK_STREAM, 0);//设置服务器端socketaddrServer.sin_addr.S_un.S_addr = htonl(INADDR_ANY);//本机IP addrServer.sin_family = AF_INET;addrServer.sin_port = htons(6000);//将服务器socket绑定在本地端口bind(sockServer, (SOCKADDR *)&addrServer, sizeof(SOCKADDR));//Listen监听端口listen(sockServer, 5);//5为等待连接数目printf("服务器已启动:\n监听中...\n");len = sizeof(SOCKADDR);//accept会阻塞进程,直到有客户端连接上来为止sockClient = accept(sockServer, (SOCKADDR*)&addrClient, &len);//当客户端连接上来时,拼接字符串sprintf(sendBuf, "欢迎 ip:%s 的用户连接,发送成功,欢迎使用\n",inet_ntoa(addrClient.sin_addr));//向客户端发送字符串send(sockClient, sendBuf, strlen(sendBuf) + 1, 0);//获取客户端返回的数据recv(sockClient, recvBuf, 100, 0);//打印客户端返回的数据CString text;text = recvBuf;SetDlgItemText(IDC_EDIT1, text);//关闭socketclosesocket(sockClient);}客户端:#include<Winsock2.h>#include<stdio.h>#pragma comment(lib, "ws2_32.lib")#include"stdafx.h"#include"通信实验.h"#include"client.h"#include"afxdialogex.h"// client 对话框IMPLEMENT_DYNAMIC(client, CDialogEx)client::client(CWnd* pParent/*=NULL*/): CDialogEx(IDD_DIALOG2, pParent){}client::~client(){}void client::DoDataExchange(CDataExchange* pDX){CDialogEx::DoDataExchange(pDX);}BEGIN_MESSAGE_MAP(client, CDialogEx)ON_BN_CLICKED(IDC_BUTTON1, &client::OnBnClickedButton1)END_MESSAGE_MAP()// client 消息处理程序void client::OnBnClickedButton1(){// TODO: 在此添加控件通知处理程序代码char* ip1 = "192.168.1.110";char* ip2 = "192.168.1.111";CString text;GetDlgItemText(IDC_EDIT1, text);int nLength = text.GetLength();int nBytes = WideCharToMultiByte(CP_ACP, 0, text, nLength, NULL, 0, NULL, NULL);char* message = new c har[nBytes + 1];memset(message, 0, nLength + 1);WideCharToMultiByte(CP_OEMCP, 0, text, nLength, message, nBytes, NULL, NULL);message[nBytes] = 0;int err;char recvBuf[100];SOCKET sockClient; // 客户端 ScoketSOCKADDR_IN addrServer; // 服务端地址WSADATA wsaData;WORD wVersionRequested;wVersionRequested = MAKEWORD(2, 2);err = WSAStartup(wVersionRequested, &wsaData);if (err != 0){return;}if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2){// 启动错误,程序结束WSACleanup();return;}// 新建客户端 scoketsockClient = socket(AF_INET, SOCK_STREAM, 0);// 定义要连接的服务端地址addrServer.sin_addr.S_un.S_addr = inet_addr(ip1);// 目标IP (175.0.170.28是本机地址) addrServer.sin_family = AF_INET; // 协议类型是INETaddrServer.sin_port = htons(6000);// 连接端口1234// 让 sockClient 连接到服务端connect(sockClient, (SOCKADDR *)&addrServer, sizeof(SOCKADDR));// 发送数据到服务端send(sockClient, message, strlen(message) + 1, 0);// 从服务端获取数据recv(sockClient, recvBuf, 100, 0);// 打印数据text = recvBuf;SetDlgItemText(IDC_EDIT2, text);// 关闭socketclosesocket(sockClient);WSACleanup();// 定义要连接的服务端地址二addrServer.sin_addr.S_un.S_addr = inet_addr(ip2);// 目标IPaddrServer.sin_family = AF_INET; // 协议类型是INETaddrServer.sin_port = htons(6000);// 连接端口1234// 让 sockClient 连接到服务端connect(sockClient, (SOCKADDR *)&addrServer, sizeof(SOCKADDR));// 发送数据到服务端send(sockClient, message, strlen(message) + 1, 0);// 从服务端获取数据recv(sockClient, recvBuf, 100, 0);// 打印数据text = recvBuf;SetDlgItemText(IDC_EDIT2, text);// 关闭socketclosesocket(sockClient);WSACleanup();}第三部分结果与讨论(可加页)二、实验结果分析(包括数据处理、实验现象分析、影响因素讨论、综合分析和结论等)通过修改实验一所定义的客户端的消息发送可以实现点到多个点的群发通信,客户端依次将信息发送到第一个ip,第二个ip,第三个ip客户端发送消息,计算机a上服务器接收到消息计算机b上服务器接收到消息二、小结、建议及体会通过在实验一的基础上继续开发,我实现了多个接收地址的群发界面,更加深入了解了winsock通信机制,以及利用mfc编程实现的方法。

相关文档
最新文档