还剩33页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
毕业实习报告姓名吴洁鑫学号班级9121065802专业网络工程日期
2015.
10.
698.〃记录日志
99.CNetChatServerDlg*theApp.GetMainWnd-DisplayLogstrTime;
100.m_strName=strTemp;
101.〃更新服务列表|
102.CString strl=this-UpdateServerLog;
103.〃更新在线所有客服端|
104.this-UpdateAllUserstrl;
105.}
106.
107.〃转发消息
108.void CClientSocket::OnMSGTranslatechar*buff,int nlen
109.{[
11.HEADER head;
111.head.type=MSG_SEND;j
112.head.nContentLen=nlen;
113.POSITION ps=m_pList-GetHeadPosition;
114.
115.whileps!=NULL
116.{
117.CClientSocket*pTemp=CClientSocket*m_pList-GetNextps;|
118.pTemp-SendheadsizeofHEADER;
119.pTemp-Sendbuff.,nlen;}
120.
121.
122.
123.
124.BOOL CClientSocket::WChar2MByteLPCWSTR srcBuffLPSTR destBuffint nlen
125.{
126.int n=0;;
127.n=WideCharToMultiByteCP_OEMCP,0,srcBuff,-1,destBuff,0,0,FALSE|
128.ifnnlen
129.return FALSE;
130.;
131.WideCharToMultiByteCP_OEMCP0,srcBuff-1,destBuffnlen,0,FALSE J
132.
133.return TRUE;
134.
135.|
136.//跟新所有在线用户
137.void CClientSocket::UpdateAllUserCString strUserlnfo
138.{
139.HEADER_head;[
140._head.type=MSG_UPDATE;
141._head.nContentLen=strUserInfo.GetLength+1;
142.char*pSend=new char[_head.nContentLen];
143.memsetpSerd0,_head.nCortentLen*sizeofchar;
144.if!WChar2MBytestrllserInfo.GetBuffer0,pSend,_head.nContentLen
145.{|
146.Af xMessageBox_T字符转换失败”;
147.delete pSend;
148.return;
149.}|
150.POSITION ps=m_pList-GetHeadPosition;
151.whileps!=NULL
152.{
153.CClientSocket*pTemp=CClientSocket*m_pList-GetNextps;
154.〃发送协议头
155.pTemp-Sendchar*_head sizeof_head;J
156.pTemp-SendpSend_head,nContentLen;J
157.}
158.
159.delete pSend;
160.
161.}
162.
163.//跟新服务器在线名单]
164.//返回在线用户列表的String
165.CString CClientSocket::UpdateServerLog{
166.
167.CString strUserlnfo=_T;
168.
169.POSITION ps=m_pList-GetHeadPosition;I
170.
171.whileps!=NULL
172.{
173.CClientSocket*pTemp=CClientSocket*m_pList-GetNextps;J
174.strUserlnfo+=pTemp-m_strName+_T#;
175.}
176.CNetChatServerDlg*theApp.GetMainWnd-UpdateUserInfostrUserlnfo;
177.
178.return strUserlnfo;
179.在上面的代码中还涉及到一个HEADER struct这是一个自定义的一个头结构,相当于自定义的一个协议,不过这个很简化在这个协议里我们要指定我们本次要发送数据的type,既是我们发送的那种消息的数据还有数据的长度为了不浪费空间,我们选择2次发送每次给服务器发数据时都先发送一个协议头,然后再发送数据本身其实也可以既不浪费空间,也只发送一次但是那就在发送之前对数据进行序列化在接收端接收到数据后又反序列化但是C++中并没有提供相应的方法,所以我们要么自己写,要么用第三方的库类但是这种方法代价比,我们分两次发送代价高得多,所以为了方便我们就分2次发送#pragma once////////////自定义协议〃〃〃〃〃〃〃〃〃/const intMSG_LOGO IN=0x01;〃登录const intMSG_SEND=0x11;〃发送消息const intMSG_CLOSE=0x02;//退出const intMSG_UPDATE=0x21;〃更新信息#pragma packpush,1typedef structtagHeader{int type;〃协议类型int nContentLen;〃将要发送内容的长度}HEADER,*LPHEADER;#pragma packpop客户端的实现
3.
31.客户端相对来说要简单的多,他只涉及一个CCIientSocket,但是这个类和服务器端那个是不一样的,只是名字相同而已首先还是要初始化socket库,位置、添加方法和客户端都一样,接着创建客户端的套接字然后连接服务器
2.if!AfxSocketInitI
3.
4.AfxMessageBox_T初始化Socket库失败!;|
5.return false;}
6.
7.
8.m_pSocket=new CClientSocket;|
9.if!m_pSocket
10.{
11.AfxMessageBox_T内存不足!;
12.return false;
13.}
14.
15.ifI!m_pSocket-Create{
16.
17.AfxMessageBoxjT创建套接字失败!;
18.return false;
19.}
20.I
21.CLogoInDlg*pLogoinDlg;〃登录对话框
22.pLogoinDlg=new CLogoInDlg;
23.
24.if pLogoinDlg-DoModal==工DOK//这里其实是点击了退出
25.
26.//不登录I
27.delete pLogoinDlg;
28.m_pSocket-Close;|
29.return false;
30.}
31.else
32.{
33.delete pLogoinDlg;
34.}接着和服务器端一样,重载Exit Instance;
1.
2.int CNetChatClientApp::Exitlnstance
3.{
4.ifm_pSocket
5.
6.delete m_pSocket;I
7.m_pSocket=NULL;}
8.一
9.
10.return CWinApp::Exitlnstance;
11.}
12.
13.CClientSocket*CNetChatClientApp::GetMainSocket const
14.{I
15.return m_pSocket;
16.}.客户端的Cl ientSocket如下
12.#pragma onceI
3.
4.class CClientSocket:public CSocket
5.{
6.public:I
7.CClientSocket;
8.virtual~CClientSocket;|
9.public:
10.virtual voidOnReceiveint nErrorCode;〃客户端接收消息
11.BOOL SendMSGLPSTRIpBuff,int nlen;〃客户端发送消息
12.BOOL LogoInLPSTRIpBuff,int nlen;〃客户端登录
13.CString m_strUserName;〃用户姓名
14.};登录和需送消息的部分代码如下
1.void CLogoInDlg::OnBnClickedBtnLogoin
2.
3.〃登录
4.UpdateData;
5.ifm_strUser.IsEmpty
6.{一
7.AfxMessageBoxjT“用户名不能为空!”;
8.return;
9.}
10.
11.ifm_dwIP==
012.
13.AfxMessageBox_T无效IP地址”;
14.return;
15.}
16.
17.CClientSocket*pSock=theApp.GetMainSocket;[
18.IN_ADDR addr;
19.addr.S_un.S_addr=htonlm_dwIP;I
20.CString stripinet_ntoaaddr;
21.if!pSock-ConnectstrIP.GetBuffer0,
898922.
23.AfxMessageBox_T连接服务器失败!;
24.return;
25.}
26.〃发送
27.pSock-m_strUserName=m_strUser;
28.char*pBuff=new char[m__strUser.GetLength+1];
29.memsetpBuff0,m_strUser.GetLength;
30.ifWChar2MBytem_strUser.GetBufferO,pBuff,m_strUser.GetLength+
131.pSock-LogoInpBuff,m_strUser.GetLength+1;|
32.delete pBuff;
33.CDialogEx::0nCancel;
34.}
35.|
36.
37.void CLogoInDlg::OnBnClickedOkI
38.{
39.//退出
40.CClientSocket*pSock=theApp.GetMainSocket;
41.pSock-Close;
42.CDialogEx::0n0K;
43.}///消息发送[cpp]view plaincopy
1.void CNetChatClientDlg::OnBnClickedBtnSend2」
3.〃发送消息
4.UpdateData;
5.if m_strSend.IsEmptyO
6.{
7.Af xMessageBox_T发送类容不能为空!;
8.return;
9.}
10.
11.CString temp;
12.CTime time=CTime::GetCurrentTime;
13.temp=time.Format%H::%S;]
14.〃姓名+_T\n\t时间
15.m_strSend=theApp.GetMainSocket-m_strUserName+_T+temp+_T\r\r+nm_strSend+_T\r\n;|
16.
17.char*pBuff=new char[m_strSend.GetLength*2];
18.memsetpBuff0,m_strSend.GetLength*2;
19.〃转换为多字节|
20.WChar2MBytem_strSend.GetBuffer0,,pBuff,m_strSend.GetLength*2;
21.//|
22.theApp.GetMainSocket-SendMSGpBuff,m-strSend.GetLength*2;
23.
24.delete pBuff;
25.
26.m_strSend.Empty;
27.UpdateData0;
28.
29.}[cpp]view plaincopy
1.void CNetChatClientDlg::UpdateUserlnfoCString strinfo
2.{
3.CString strTmp;
4.CListBox*pBox=CListBox*GetDlgItemIDC_LB_ONLINE;
5.pBox-ResetContent;
6.while!strinfo.IsEmpty
7.strinfo.Find#;
8.ifn==-l
9.break;
1.strTmp=strinfo.Leftn;
11.pBox-AddStringstrTmp;
12.strinfo=strinfo.Rightstrinfo.GetLength-n-1;
1134..}
15.}|
16.
17.void CNetChatClientDlg::UpdateTextCString strText
18.{
19.CEdit*GetDlgItemIDC_ET_TEXT-ReplaceSelstrText;程序运行结果截图
1.
1.1背景
1.2设计目标.总体设计
22.1功能要求
3.2系统主要功能和主要功能描述详细设计
3.
1.1设计流程图
3.2服务器端的实现
4.3客户端的实现程序运行结果截图
4..心得体会5芯片图路由器PT-2621------------------------------------------------------19交换机CISCO2950------------------------------------------------20芯片功能分析路由器芯片功能分析----------------------PT-262121交换机芯片功能分析-------------------CISCO295025参观心得-------------------------------
32201.82559ER微控制器/微处理器路由器PT-2621芯片功能分析产品特点最低成本最优化的整合解集成IEEE
802.310BASE-T和100BASE-TX兼容的物理层无缝的32位PCI主界面128KB的闪存接口薄BGA15毫米2包ACPI和PCI电源管理电源管理事件上“有趣”的数据包和链路状态变革的支持测试访问端口高性能网络功能类似的链式存储结构82559,82558,82557,以及82596改进的动力传输链多优先级传输队列全双工支持,在两个10和100Mbps的IEEE
802.3u自动协商支持3字节的发送和3字节接收FIFO的快速回至后端传输的支持以最小的帧间间隔IEEE
802.3X10OBASE-TX流量控制支持-低功耗特性低功耗
3.3V器件高效的动态待机模式深度掉电支持Clockrun协议支持GD82559ER概述该82559ER是完全集成10BASE-T/100BASE-英特尔的第二代家族的一员TX LAN解决方案该82559ER既包括媒体访问控制器MAC和中物理层PHY组合成单个组分溶液82559家庭成员的基础上82558的基本功能,并包含电源管理增强功能该82559ER是功能增强的分散-集中总线主控32位PCI控制器能力,这使得82559ER通过PCI总线以执行高速数据传输82559ER总线主控器功能启用组件来处理高电平的命令和执行多个操作,从系统CPU从而卸货通信任务两大的发送和接收的字节3每个帮助防止FIFO中的数据欠载和溢出,允许82559ER传送具有最小帧间间隔IFS的数据该82559ER可以在任何全双工或半双工模式下运行在全双工模式下,82559ER符合IEEE
802.3x流量控制规范半双工性能由专用的碰撞减速机构增强该82559ER包括一个简单的PHY接口到线变压器在10BASE-T和速率100BASE-TX和自动协商功能的速度,双工,流量控制这些功能和其他降低成本,房地产和设计复杂度该82559ER还包括一个接口到串行4针EEPROM和并行接口,以一个128Kbyte闪存
2.intel TE28F160C3TD70编程只读存储器产品特点柔性SmartVo Itage技术
2.7V-
3.6V读/编程/擦除12V的快速生成编程
1.65V-
2.5V或
2.7V-
3.6V的I/0选项降低整体系统功耗高性能
2.7V-
3.6V:70ns的最大访问时间优化的架构代号加数据存储八4千字块,顶部或底部参数启动长达一百二十七个32K字块-快速的程序挂起能力快速擦除挂起功能灵活的块锁定锁定/解锁任何块完全的保护上电时WP#引脚用于硬件块保护低功耗9mA典型阅读有一个自动的典型待机省电功能(APS)扩展温度操作40°C至+85C128位注册保护64位唯一设备标识符64位用户可编程0TP细胞扩展循环能力最低100000块擦除周期软件英特尔闪存数据集成(FDI)®支持顶部或底部启动存储,流媒体数据(例如,语音)英特尔公司基本命令集通用闪存接口(CFI)标准表面贴装包装-48球BGA*/VFBGA64-易球BGA封装48引脚TS0P封装ETOX VI I I(
0.131A m)FL灰技术™16,32兆ETOX VII(
0.18日m)闪存技术-16,32,64兆™ETOX VI(
0.25|i m)闪存技术™8,16和32兆位
3.LTC1345csw瞬态电压抑制器产品特点单芯片提供所有V.35差分时钟和数据信号单一5V电源工作软件可选DTE和DCE配置发射器和接收器可承受反复±10kVESD脉冲关断模式可我CC以典型值1u AlOMbaud传输速率发射器保持高阻抗时残疾人,关机,或关机符合CCITT V.35规格发射器有短路保护此外,LTC1345是一款单芯片收发器,提供了从一个V.35接口差分时钟和数据®信号5V单电源再加上一个外部电阻终止网络和一块LT1134A RS232收发器为®控制信号,LTC1345形成一个完整的低电源DTE或DCE V.35接口端口从操作单5V电源该LTC1345具有三个电流输出差分发射器,三个差分接收器,和一个充电泵该收发器可用于DTE和DCE配置操作或关闭使用两个选择引脚在关断模式,电源电流降低至1U A该收发器的工作频率高达WMbaud o所有变送器具有短路保护和接收器输出使能引脚允许接收器输出被强制成高阻抗状态这两个发送器输出和重新ceiver输入功能±10kVESD保护充电泵设有一个调节的VEE使用三个外部输出1UF电容
4.LVTH245A电容
5.这些器件是专为数据总线之间的异步通信他们从传输数据A总线到B总线或从B总线到A总线,这取决于在方向控制的逻辑电平(DIR)输入输出使能(0E)输入可用于禁用该设备,以使总线被有效隔离为了确保上电或断电高阻抗状态,0E应当连接到VCC通过上拉电阻器;该电阻的最小值由驾驶员的电流吸收能力来确定有源总线保持电路被设置在有效的逻辑电平,以保持未使用的或浮动的数据输入利用上拉或下拉电阻器与总线保持电路,不建议使用这些设备的使用我热插入应用程序完全指定关闭和电三态在我关闭电路禁止输出,防止有害的电流回流通过设备时,他们断电该电三态电路置于高阻抗状态下的输出在上电期间和断电,ST16C2552CJ微控制器,异步接收和发射机这可以防止驱动程序冲突.产品特点5V电压输入各引脚与国半的PC
16552.ExarJ s的XR16L2752/XR16C2752引脚功能兼容4Mbps的发送/接收速率(外接时钟频率为64MHz时)2个独立的UART通道寄存器位置符合16C550工业标准16字节的发送FlF0可以减少外接CPU的带宽要求16字节的接收FIFO(带错误标记)可以减少外接CPU的带宽要求4个可选的RX FIFO触发点固定的发送FIFO中断触发点完整MODEM接口(CTS#、RTS#、DSR#、DTR#、RI#、CD#)通过TXRDY#和RXRDY#引脚进行DMA操作与DMA检测UART内部AB双通道可同时写操作多功能输出引脚可实现多功能复用,只需少数I/O引脚数可编程带奇、偶或无校验的数据长度为5bit、6bit、7bit、8bit外部晶振或外部时钟输入概述
6.ST16C25522552为双通道通用异步收发器,是PC16552的升级版ST16c2552支持增强型UART功能带16字节的FIFO缓冲、一个MODEM控制接口、最高可达4Mbps的数据传输速率用户可以通过状态寄存器查看芯片的工作状态和错误标志,也可以通过软件编程选择系统中断和MODEM控制接口来满足特定用户需求独立的可编程波特率发生器可生成波特率范围为50Bps~4Mbps,其时钟源可配置为外部晶振或外部时钟内部的回送功能可进行板级诊断2552支持由FIFO控制的块数据传输DMA,可通过TXRDY#和RXRDY#引脚信号对DMA传输进行检测功能选择寄存器AFR为用户提供同时初始化双通道UART功能2552可用封装为44-PLCCo
7.xc95288x I可编程逻辑器件产品特点6ns p i n-to-pi n logicde IaysSystem frequencyup to208MHz288macroceI Iswith6,400usabIe gatesAvai IabIeinsmaI Ifoot pri ntpackages:144-pin TQFP117userl/Opins208-pin PQFP168userl/Opins256-pin BGA192userl/Opins256-pin FBGA192userl/Opins280-pin CSP192userl/OpinsOptimized forhigh-performance
3.3V systemsLowpower operati on5V toI erantI/O pi nsaccept5V,
3.3V,and
2.5V s i gnaIs
3.3V or
2.5V outputcapab iI ityAdvanced
0.35micron featuresize CMOSFast FLASHtechno Iogy™
7.HY57V641620HG同步动态随机存储器产品特点Single
3.3±
0.3V powersuppIyAl Idevice pinsare compatibIewith LVTTL interfaceJEDEC standard400mi I54pin TSOP-II with
0.8mm ofpin pitchAlI inputsand outputsreferenced topositive edgeof systemcIockData maskfunct ion byDQMInternaI fourbanks operati onAutorefresh andseIf refresh4096refresh eyeIes/64msProgrammabIe BurstLength andBurst Type1,2,4,8or Fullpage forSequent ia IBurst1,2,4or8for InterIeave BurstProgrammabIeCAS Latency2,3CIocks交换机CISCO2950芯片功能分析
1.IDT79RC32V332-1OODH B0417GMP CPU通信处理器功能列表RC3230032位微处理器-增强型MIPS-IIISA-增强型Ml PS-IV高速缓存预取指令-DSP指令-MMU具有16项TLB-8KB指令缓存,2路组相联-2KB数据缓存,2路组相联-每行缓存锁定-写式和回写高速缓存管理-通过EJTAG端口调试接口一大和I ittIeendian支持中断控制器-允许每一个状态中断读取和屏蔽l2C-灵活的12c标准的串行接口连接到各种外设-标准和快速模式时序的支持-可配置的7位或10位寻址的从UART-两个16550兼容的UART-波特率支持高达
1.5Mb/s的计数器/定时器-三个通用32位计数器/定时器通用I/0引脚(GPIOP)-36个可单独编程引脚-每个引脚可编程为输入,输出或复用功能-输入可以作为一个中断或NMI源-输入也可以是高电平或低电平有效SDRAM控制器-2内存银行,非交错式,512MB总-32位宽的数据通路-支持4位,8位和16位宽的SDRAM芯片-SOD IMM支持一撑之间传输网页上-自动刷新代外围设备控制器-26位地址总线-具有可变宽度支持的8位,16位或32位的32位数据总线-8位引导ROM支持-6银行提供,高达64MB银行-支持闪存ROM,PROM,SRAM,双端口存储器,和外围设备-支持外部等待状态的产生,InteI或Motorola风格-写保护功能-直接控制,可选的外部数据收发器系统完整性-可编程系统看门狗定时器的复位时间系统OUT-可编程总线事务次的存储器和外设交易产生的超时热复位DMA-16个DMA通道-芯片和外围服务-支持内存到内存,内存到I/0和I/0至IJ I/转帐-支持通过灵活的基于描述符的操作和链接记录链表(分散/聚集能力)-支持非对齐传输-支持突发传输USB-版本
1.1兼容-USB从设备控制器-支持6thUSB端点-在12Mb/s的全速运转-支持控制,中断,批量和同步端点-支持USB远程唤醒-集成的USB收发器TDM-串口时分复用(TDM)语音和数据接口脸-提供接口,电话编解码器和DSP-界面以高质量的音频位A/D和D/与外部胶合逻辑-支持1至IJ128个8位时隙-兼容朗讯CHI,GCI,敏迪ST总线,K2和SLD总线-支持高达
8.192Mb/s的数据传输速率-支持内部或外部帧生成-支持多个不连续的有源输入和输出的时间时隙EJTAG-运行时模式提供了一个标准的JTAG接口-实时模式提供了额外引脚用于实时跟踪信息ETHERNET-为10和100Mb的全双工支持/S以太网-IEEE
802.3u标准兼容的媒体独立接口(Mil)与串行管理接口-IEEE
802.3u自动协商,自动速度选择-灵活的地址过滤模式-64项基于哈希表的多播地址过滤ATM SAR-可配置为一个乌托邦水平1接口或1UT0PIA第2级接口与2根地址线(3PHY的最大值)-支持25MB/s和更快的ATM-支持速度高达UTOPIA数据路径界面操作到33MHz的-支持标准的53字节的ATM信元-执行HEC生成和检查-单元处理丢弃短单元和剪辑长单元-16单元缓冲-乌托邦模式8单元格中输入缓冲器和8单元的输出缓冲器-对于CRC-32新一代硬件的支持,并检查AAL5-对于CRC-10生成和检查硬件支持-虚拟缓存机制获得支持接收任何无需CPU干预对多达八个simulta-长包neous I主动接收通道v-帧模式传输机制支持的传输无需CPU干预的任何长度的数据包系统特点-JTAG接口(IEEE
1149.1兼容)-208引脚PQFP封装-
2.5V内核电源和
3.3V的I/0供电-高达180兆赫管道次数高达75MHz的总线频率设备概述该RC32355是一种含有高perfor-片上系统”曼斯的32位微处理器该微处理器内核使用extensively在设备的心脏,以落实最需要的功能的软件以最小的硬件支持高高性能微处理器处理多样化的通用计算任务而这将需要特定的应用任务的专用硬件洁具在软件中实现特定的应用任务可包括路由功能,防火墙功能,调制解调器仿真,ATMSAR仿真,等等该RC32355满足各种嵌入式commu-要求通信业和数字消费应用它是一个单芯片解决方案即采用最通用的系统功能和应用的化特定的接口,使产品快速进入市场,成本非常低系统,简化了设计,减少了电路板空间CPU核心的执行该RC32355是围绕RC3230032位高性能微处理器内核该RC32300实现了增强型MIPS-II ISA和有助于满足实时的目标和吞吐量最大化的通过提供的功能,例如通讯和消费电子系统在预取指令,多DSP指令和高速缓存锁定DSP指令使RC32300实现
33.6和56Kbps的调制解调器功能的软件,消除了对外部专用硬件缓存锁定保证了实时性能通过举办重要的DSP代码和参数缓存中立即可用性微处理器还实现了一个片上的MMU与TLB中,使得其完全兼容的实时要求操作系统内存和I/0控制器该RC32355集成了一个灵活的存储和外围设备控制器提供SDRAM,闪存ROM,SRAM支持,双口存储器,以及其它I/0设备它可以直接连接到8位引导ROM,用于非常低的成本系统的实施它可以访问非常高的带宽外部存储器(380MB/秒的峰值)在非常低的系统的成本它还提供了各种权衡成本/性能主存储器架构在RC32355实现的计时器满足大多数RTOS的要求DMA控制器DMA控制器从移动中数据偏离加载CPU芯片上的接口,外围设备,和存储器在DMA控制器支持分散/聚集DMA没有对齐限制,适用于通信和图形系统TDM总线接口该RC32355集成了行业标准的TDM总线接口直接访问外部设备,如电话的编解码器和品质音频位A/D和D/为此功能对于应用的关键,如如电缆调制解调器和xDSL调制解调器,需要沿着传送语音用数据来支持IP语音的能力以太网接口该RC32355包含一个片上以太网MAC能力的10和100Mbps的线路接口与Ml I接口它支持多达4个MAC地址在SOHO路由器,高性能RC32300CPU核心路由以太网和ATM接口之间的数据在其他应用,如高速调制解调器,以太网接口可以是用来连接到PCoUSB设备接口该RC32355包括业界标准的USB设备接口使家电消费直接连接到电脑ATM SAR该RC32355包括一个可配置的ATM信特区,支持UTOPIA1级或UTOPIA2级界面在ATM SAR是imple-mented作为软件和硬件的混合体硬件模块提供了必要的低水平块(如CRC生成和检查和细胞的缓冲),而软件被用于上级SARing功能在xDSL调制解调器应用中,UTOPIA接口端口直接面对到的xDSL芯片组在SOHO路由器或线路卡一三层交换机,它提供了访问ATM网络对于ICE增强型JTAG接口-.对于低成本的在线仿真(ICE),该RC32300CPU核心包括增强型JTAG(EJTAG)接口这种接口由两种操作模式运行时模式和实时模式运行时模式提供了一个标准的JTAG接口芯片调试和实时模式下提供了额外的状态插脚式PCST[2:0]-which被一起使用JTAG引脚为实在处理器内部时钟的时间跟踪信息或任何分裂管道时钟.-.BCM5618A1KTB TK0413P11717469TA交换芯片产品特点24个10/100Mbps和210/100/100Mbps以太网端口,支持铜缆和光纤接第五代StrataSwitch的和的StrataXGS产品LINE®®线速交换的所有数据包大小和条件优点总结片上的数据包存储器和表存储器IPv6路由和隧道先进的快速筛选处理器(FFP)的ContentAware1”分类在硬件的高级安全特性端口聚合和跨堆叠镜像支持先进的数据包流量控制阻塞的预防头行背压支持每个端口八个QoS队列具有层次最低/每个服务等级(CoS)每类每个队列,的最大整形PORT符合标准的
802.1ad的商桥-.INTEL LXT9785HC该LXT9785是支持IEEE
802.3物理的8端口快速以太网PHY收发器应用层在两个10Mbps和100Mbps o该器件提供两个串口/来源同步SMII/SS-SMII与简化媒体独立RMII接口切换和其他独立端口的应用程序所有网络端口提供一个组合的双绞线TP,或者为伪ECLPECL接口无论10Mbps或100Mbps10BASE-T和100BASE-TX以太网双绞线,或100Mbps的100BASE-FX,以太网光纤介质该LXT9785提供了三个独立的LED驱动器输出,每个端口该器件支持半双工和全双工运行在10Mbps和100Mbps,并且只需要一个单一的
2.5V电源产品特点八IEEE
802.3兼容的10BASE-T或100BASE-TX端口,具有集成滤波器
2.5V操作优化的双高叠RJ-45应用程序专有的优化信号处理架构在提高信噪比3分贝理想的模拟滤波器TM强大的基线漂移校正所有100BASE-FX光纤的能力端口同时支持自动协商和系统没有自动协商遗留系统能力JTAG边界扫描多个RMII和SMII/SS-SMI I接口独立的PHY端口操作通过MDI0接口或外部配置控制引脚低功耗;每端口250毫瓦典型的MDIX自动交叉功能208引脚PQFP和241引脚BGA封装MDI0分节成2X4或1X8精读网络gurat ionso-.LF873A快速以太网高性能RISC CPU:只有35条单字指令学习除了程序中的所有单周期指令分支,这是两个周期运行速度DC-20MHz时钟输入DC-200ns指令周期最多FLASH程序存储器的8K义14的话,高达368X8字节的数据存储器RAM,高达256义8字节的EEPR0M数据存储器引脚兼容其他28针或40/44针PIC16CXXX和PIC16FXXX微控制器外设特性定时器0:8位定时器/计数器,8位预分频器定时器1:16位定时器/计数器,带预分频器,通过外部睡眠时,可加晶振/时钟定时器2:8位定时器/计数器,8位周期寄存器,预分频器和后分频器两个捕捉,比较和PWM模块-捕捉为16位,最大分辨率为
12.5纳秒-比较为16位,最大分辨率为200纳秒-PWM最大分辨率为10位同步串行端口SSP与SPI主模式和|2C主/从TM通用同步异步收发发射器USART/SCI与9位地址发现聊天程序设计报告
1.引言计算机网络技术发展至今已经大大超越了人们当初的预想,无论是人们日常的工作还是学习,我们都越来越多的依靠到互联网各种实时性的聊天娱乐软件也同时诞生,而且为我们的即时通讯带来了众多的方便,比如说大家所熟知的腾讯QQ、微软的MSN、移动的Fetion等,都是做的比较成功的实时聊天工具背景
1.1近年来,互连网发展日新月异,网络使空间的距离不再成为人们沟通的障碍,世界各个角落的人们可以通过Internet收发邮件、实时聊天、获取最新的资讯本次生产实习,我选择了做一个基于C/S的聊天程序,通过制作该程序更好的掌握与网络Socket编程相关的知识设计目标
1.2本课题是建立聊天通信模型,设计一个聊天室软件,包括服务器端和客户端,主要功能为服务器端功能1初始化socket,创建服务器端2维护一个链表,保存所有用户的IP地址、端口信息3接受用户传送来的聊天信息,然后向链表中的所用用户转发4接受用户传送来的连接判断命令,并向用户发出响应命令客户端功能客户端界面上的两个文本框,一个用于显示接受的聊天信息,一个用来接受用户输入的聊天信息当按下“发送”按钮时将信息发送给服务器通过本课题的毕业设计,可以比较深入的了解和掌握WINSOCK控件基本属性、方法和事件,理解网络聊天通信的概念,输控制协议TCP进行数据交流,初步掌握网络聊天通信程序的设计方法并能巩固和扩展大学期间的学习内容,进行项目的设计开发训练,更好的适应社会的需求
2.总体设计功能要求
2.1D支持多个客户端的连接,在服务器和多个客户端之间进行数据传输;2接收客户端发送的消息,并显示在一个列表框中;3在用户连接上后有提示,显示出连接的用户名字;4发送信息时可以显示聊天的所有记录;系统主要功能和主要功能描述
2.2聊天程序服务器端必须能够做件事情31聊天程序服务器要在待定的端口上等待来自聊天客户的连接请求,并且需要维护一个客户链表,以记录所有成功的连接并行从动端口(PSP)-8位宽外部RD,WR和CS控制(40/44引脚只)欠压检测电路欠压复位(B0R)模拟功能10位,最多8个通道的模拟-数字转换器(A/D)欠压复位(B0R)模拟比较器模块两个模拟比较器可编程的片上电压参考(VREF)模块从设备的可编程输入复用输入和内部电压基准比较器输出外部访问单片机特性100,000次擦除/写周期增强型闪存程序存储器的典型百万擦除/写周期数据EEPR0M典型的内存数据EEPR0M保留〉40年在软件控制下自行再编程在线串行编程(ICSPTM)通过两个引脚单电源5V在线串行编程看门狗定时器(WDT)有自己的片上RC振荡器以便可靠地工作可编程代码保护节电睡眠模式可选的振荡器选项在线调试(ICD),通过两个引脚CMOS技术低功耗,高速闪存/EEPROM技术全静态设计宽工作电压范围(
2.0V至
5.5V)商业和工业温度范围低功耗
6.LC245A8路总线收发器产品特点工作在
1.65V至
3.6V输入接受电压为
5.5V最大tpd
6.3ns的电压为
3.3V典型的VOLP(输出地弹跳)LT;
0.8V电压VCC=
3.3V,TA=25°C典型的VOHV(输出VOH冲)>2V在VCC=
3.3V,TA=25°C I关闭支持部分掉电模式手术支持混合模式信号操作上的所有端口(5-V输入/输出电压
3.3-V VCC)闭锁性能超过250毫安每JESD17ESD保护超过JESD222000-V人体模型(A114-A)1000-V带电器件模型(C101)
7.MAX
32328.该MAX3222/MAX3232/MAX3237/MAX3241传输的收发机有一个专有的低压差发送输出把舞台实现真正的RS-232从性能
3.0V至
5.5V的电源与双电荷泵该设备只需要四个小
0.1^F外部电荷泵电容在MAX3222,MAX3232和MAX3241是保证在数据传输速率上运行120kbps,同时保持RS-232输出电平该MAX3237是保证在250kbps数据速率运行在正常工作模式和1Mbps的中MegaBau/M工作模式,同时保持RS-232输出电平该MAX3222/MAX3232有2个接收器和2驱动程序该MAX3222具有1u A关断模式降低功耗,延长电池生活在便携式系统它的接收器保持活跃关断模式下,允许外部设备,如调制解调器只使用1HA电源电流进行监测租在MAX3222和MAX3232的引脚,封装,并与工业标准的功能兼容MAX242和MAX232分别该MAX3241是一个完整的串行端口(3驱动器/5接收器),专为笔记本电脑和亚笔记本计算机在MAX3237(5驱动器/接收器3)是理想的快速调制解调器应用这两种器件具有停机模式中,所有接收器可保留活跃而只使用1U A电源电流接收器R1(MAX3237/MAX3241)和R2(MAX3241)有额外的输出把除了其标准输出这些额外的输出始终是活动的,从而使外部设备诸如调制解调器,而不会向前偏压监测荷兰国际集团的保护二极管的电路,该电路可具有VCC完全除去在MAX3222,MAX3237,MAX3241和可采用节省空间的TSS0P和SS0P封装.
9.K4S643232H-TC60同步动态随机存储器产品特点JEDEC标准的
3.3V电源LVTTL与复用地址兼容•四家银行的操作MRS循环地址重点项目CAS延迟时间
(23)突发长度(1,4,8全页)2,突发类型(顺序交错)所有输入进行采样,系统时钟的正边沿突发读取单个位的写操作DQM用于屏蔽自动自我刷新64ms的刷新周期(4K周期)CMOS SDRAM概述该K4S643232H为67,108,864比特同步高数据速率动态随机存储器组织成4X524,288字由32位制作与三星的高性能CMOS技术同步设计允许使用系统时钟的精确周期控制I/0事务处理可在每个时钟周期工作频率,可编程突发长度和可编程范围延迟允许在同一设备来对各种高带宽,高性能存储系统的应用是有用的参观心得毕业实习期间,我们参观了中兴、南瑞和华为三家大公司中兴通讯ZTE是全球第四大手机生产制造商,在香港和深圳两地上市,是中国最大的通信设备上市公司中兴通讯为全球160多个国家和地区的电信运营商提供创新技术与产品解决方案,通过全系列的无线、有线、业务、终端产品和专业通信服务,满足全球不同运营商的差异化需求我们主要参观的是中兴的一个展示厅,里面展示了中兴通讯从创业初期到今天的一些成果;后来去听了关于中兴在世界各地研究所目前的状况,印象最深的是,去非洲三年回来仅补贴就可以达到一百万南京南瑞集团公司是国网电力科学研究院为促进科研成果产业化而创建的高新技术企业,目前,国网南京自动化研究院和南瑞集团公司实行一体化运行和管理,简称“南瑞”南瑞集团公司国网电力科学研究院是国家电网公司直属单位,实行一体化运行管理,是中国最大的电力系统自动化、水利水电自动化、轨道交通监控技术、设备和服务供应商主要从事电力系统自动化、信息通信、智能化中低压电气设备、发电及水利自动化设备、工业自动化设备、非晶合金变压器及电线电缆的研发、设计、制造、销售、工程服务与工程总承包业务南瑞也有一个很大的展示厅,我们也是先通过参观展示厅对南瑞集团有一个初步的了解;后来去参观了三个主要的生产车间,了解了一下员工们每天工作的情况华为技术有限公司是一家生产销售通信设备的民营通信科技公司,华为的产品主要涉及通信网络中的交换网络、传输网络、无线及有线固定接入网络和数据通信网络及无线终端产品,为世界各地通信运营商及专业网络拥有者提供硬件设备、软件、服务和解决方案参观华为比较随意,他们大都是向我们展示华为的工作环境,带我们绕着华为南研所转了一圈因为我们是学网络的,还特意带我们去参观了网络方面员工工作的地方参观完这三家公司,最直观的感受是计算机行业在别人眼里好像是很赚钱的工作,但背后付出的辛劳也是巨大的现在大四,很多人都已经开始为以后的生计奔波,而我选择再念三年研究生也许有人认为没有必要,觉得研究生毕业还是要工作,三年社会经验或许会比三年研究生的学习更加有用但我主要是觉得,靠我现在身上这点知识储备和我的动手能力,我胜任不了公司的工作我曾经试着去找过实习,在找的过程中遇到很多问题,也发觉出我身上的很多不足谁不想进一家好的公司,领一份儿漂亮的薪酬,但是你得让别人愿意要你,你的能力要值得别人付给你的工资学无止境,就算进了公司,你还是得拼命努力就像在华为,有很严格的考核制度,你必须按时完成手头的任务并且要完成的很完美,如果你只想混日子,我想你在华为是待不下去的当然,华为还有它自己的培训体制,你各方面的能力还可以得到进一步的提升,反正最关键的还是在于自己不管在什么情况下,都必须得全力以赴,二十出头的年纪正是拼命的时候,朝着自己的目标不断奋勇向前!2聊天程序服务器要及时接受从各个聊天客户端发送过来的信息,然后把这些信息转发到一个或多个客户端对于公共聊天室,服务器将把接受到的信息向除源端外的所有客户端发送过去3服务器还要监控这些连接的状态,在客户主动离开或发生故障时从链表中删除相应的表项,并及时更新链表这些要求可以通过CSocket类提供的功能实现从CSocket派生出两个类CServerSocket和CCI ientSocket,它们分别用来侦听客户的连接请求和建立与客户的连接服务器只需要一个侦听套接字CServerSocket,然后根据客户的连接请求动态创建客户套接字CCI ientSocketo客户套接字的数量是不可预知的,因此需要一个列表来记录MFC的CPtrList类就能实现这种功能聊天程序客户端需要完成以下几个功能1聊天程序客户端要负责建立和维护与服务器的连接,通过获取用户的设置尝试与服务器连接,并且随时检测连接的状态2聊天程序客户端要把用户输入的信息及时发送到服务器一般情况下,当用户输入一行信息并且按下回车键后聊天程序就要把这一行信息发送出去,才能及时地满足用户的交互需求3要随时准备好接受来自服务器的信息,随时把接受到的信息显示出来,让用户及时看到对方的响应4用户退出聊天后要关闭与服务器的连接比较好的做法是提前通知服务器或者直接给服务器发送一条退出通知,使得服务器能够及时掌握客户端的连接状态,把对方客户的退出信息及时发送到对等实体上
3.详细设计CCIi entSocketCServerSocket设计流程图
3.1M.创建子套接字客户端用户连接成功--------------------------7T显示发送messageMessage Message找到客户端并显示服务器端的实现
3.2在应用程序开始的时候,我们先应该初始话winSock库,所以便会用到下面的一个函数BOOL AfxSocketlnitWSADATA*IpwsaData二NULL;〃用来初始化Socket,用WSAStartupO;来初始化,在应用程序结束时他会自动调用WSACIeanupO我们在开始编程之前,应该调用这个函数,对Socket进行初始化如果初始化成功返回非0,否则返回0o接着创建套接字i f!m_iSocket-Create8989{AfxMessageBox_T创建套接字错误!;m_i Socket-C Iose;return false;}创建了套接字以后按照Win32的步骤我们就应该对bind端口初始化,但是MFC不这样,应为MFC的Create内部已经调用了bind,所以我们不用再调用bind了,直接对套接字进行监听i f!m_i Socket-Listen{-AfxMessageBox_T监听失败!;m_i Socket-C Iose;return false;}然后重载Exit Instance,退出时进行清理
1.下面就是CServerSocket的具体实现
2.#pragma onceI
3.
4.#include Clientsocket.h
5.
6.class CServerSocket:public CSocket
7.{
8.public:
9.CServerSocket;
10.virtual-CServerSocket;
11.public:
12.CPtrList m_listSockets;〃用来保存服务器与所有客户端连接成功后的Clientsocket
13.
14.|
15.public:
16.virtual voidOnAcceptint nErrorCode;17-1;
1.#include stdafx.hI
2.#include NetChatServer.h|
3.#include Serversocket.h
4.
5.CServerSocket::CServerSocket
6.{
7.
8.}
9.
10.CServerSocket::-CServerSocketH.{
12.
13.}I
14.
15.void CServerSocket::OnAcceptint nErrorCode
16.{
17.〃接受到一个连接请求|
18.CClientSocket*theClientSock0;
19.theClientSock=new CClientSocketm_listSockets;I
20.if!theClientSock
21.
22.Af xMessageBoxjT“内存不足,客户连接服务器失败!*;
23.return;
24.}
25.Accept*theClientSock;|
26.〃加入list中便于管理
27.m_listSockets.AddTailtheClientSock;
28.CSocket::OnAcceptnErrorCode;
29.}在CServerSocket中又出现了一个CCI ientSocket的类,这个类和CServerSocket一样,也是派生于CSocket类,但是专门用于客户端的Socket在o这里必须重载OnAccepti ntnErrorCode函数,这样CServerSocket才能接收到客户端的请求,并且必须在OnAccept中调用Accept函数对连接请求进行响应在OnAccept我们用一个List将Cl ientSocket指针保存,以便以后调用访问接着创建CCI ientSocket类
1.
2.#pragma once
3.
4.#include stdafx.h
5./////////////////////////////////////////////////
6.///说明,该类用于和客户端建立通信的Socket
7./////////////////////////////////////////////////
8.I
9.class CClientSocket:public CSocket
10.
11.public:
12.CClientSocketCPtrList*pList;I
13.virtual-CClientSocket;
14.public:
15.CPtrList*m_pList;〃保存服务器Clientsocket中List的东西,这个是中CServerSocket中传过来的
16.CString m_strName;//连接名称
117.public:
18.virtual voidOnCloseint nErrorCode;|
19.virtual voidOnReceiveint nErrorCode;
20.void OnLogoINchar*buff^int nlen;//处理登录消息|
21.void OnMSGTranslatechar*buff,int nlen;〃转发消息给其他聊天群
22.CString UpdateServerLog;〃服务器端更新、记录口志
23.void UpdateAllUserCStringstrUser工nfo;〃更新服务器端的在线人员列表
24.private:
25.BOOL WChar2MByteLPCWSTR srcBuff,LPSTRdestBuff,int nlen;//多字节的转换
1.#include stdafx.h};
26.
2.
3.#include NetChatServer.h
4.#include Clientsocket.h
5.#include Header.h
6.#include NetChatServerDlg.h
7.
8.CClientSocket::CClientSocketCPtrList*pList:m_pListpList m_strName_TJ
9.
10.
11.
12.CClientSocket::^CClientSocket
13.
14.
15.
16./////////////////////////////////////////////////////////////////////void CClientSocket::OnReceiveint
17.nErrorCode
18.{
19.〃有消息接收
20.//先得到信息头
21.HEADER head;
22.int nlen=sizeof HEADER;
23.char*pHead=NULL;
24.pHead=new char[nlen];
25.if!pHead
26.TRACE0CClientSocket::OnReceive内存不足!;
27.return;
28.}
29.memsetpHead,0,sizeofchar*nlen;
30.ReceivepHead,nlen;
31.head.type=LPHEADERpHead-type;
32.head.nContentLen=LPHEADERpHead-nContentLen;
33.delete pHead;
34.pHead=NULL;
35.〃再次接收,这次是数据类容
36.pHead=new char[head.nContentLen];
37.if!pHead
38.
39.TRACE0H CClientSocket::0nRecive内存不足!;
40.return;
41.}
42.ReceivepHead,head.nContentLen!=head.nContentLenif
43.AfxMessageBox_T接收数据有误!;
44.
45.delete pHead;
46.return;
47./〃〃///////根据消息类型,处理数据〃///〃//〃〃〃〃〃/
48.switchhead.type
49.
50.
51.
52.
54.case MSG_LOGOIN:
55.OnLogoINpHead_,head.nContentLen;
56.break;
57.case MSG_SEND:
58.OnMSGTranslateCpHead^head.nContentLen;
59.break;
60.default:break;
61.|
62.
63.delete pHead;
64.CSocket::OnReceivenErrorCode;
65.}
66.
67.//关闭连接
68.void CClientSocket::OnCloseint nErrorCode
69.{|
70.CTime time;
71.time=CTime::GetCurrentTime;
72.CString strTime=time.Format%Y-%m-%d%H:%M:%S;
73.strTime=strTime+this-m_strName+_T离开・・.\r\n”;
74.CNetChatServerDlg*theApp.GetMainWnd-DisplayLogstrTime;
75.m_pList-RemoveAtm_pList-Findthis;
76.//更改服务器在线名单
77.CString strl=this-UpdateServerLog;
78.〃通知客户端刷新在线名单
79.this-UpdateAllUserstrl;
80.this-Close;
81.//销毁该套接字
82.delete this;
83.CSocket::0nClosenErrorCode;
84.
85.
86.〃登录
87.void CClientSocket::OnLogoINchar*buff intnlen
88.
89.〃对得接收到的用户信息进行验证
90.II...为了简化这步省略
91.//登录成功I
92.CTime time;
93.time=CTime::GetCurrentTime;
94.CString strTime=time.Format%H::%S;
95.
96.CString strTempbuff;
97.strTime=strTime+strTemp+_T登录・・・\r\rT;。
个人认证
优秀文档
获得点赞 0