实时通信系统设计

实时通信系统设计

ID:30832984

大小:155.86 KB

页数:7页

时间:2019-01-03

实时通信系统设计_第1页
实时通信系统设计_第2页
实时通信系统设计_第3页
实时通信系统设计_第4页
实时通信系统设计_第5页
资源描述:

《实时通信系统设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Z-T-800Z谒腸必3Z0Ttz0B乙0诚0哥聲王焙实验目的学习多任务环境的编程,理解多任务程序中任务间通信和同步的方法;掌握Windows环境中多线程程序设计与实现方法。实验环境Windows环境下,使用VC及Windows提供的相关API接口。实验要求模拟多任务的交互过程,每个任务用线程实现,基本要求如下:♦任务1:接收从键盘键入的字符,发送给另一任务2;♦任务2:接收任务1发来的字符,用事件的方式通知任务3接收;♦任务3:接收任务2发来的字符,并显示;♦可增加其他功能,如:以秒显示时间等;

2、♦系统能退出。原理及方法每个任务都用线程实现,相应的API为CreateThread,原型如下HANDLECreateThread(LPSECURITY_ATTRIBUTESlpThreadAttributes,SIZE_TdwStackSize,LPTHREAD_START_ROUTINEIpStartAddressrLPVOID1pParameterfDWORDdwCreationFlags,LPDWORDlpThreadld);但是在C运行时库的环境下更合适的函数为.beignthread或

3、_beginthreadex°这样创建名为taskA,taskB,taskC的三个任务,其中taskA与taskB之间使用套接字的方法进行通信,taskB与taskC之间使用事件和共享内存(用windowsAPI所提供的criticalsection保护临界区资源)的方法通信。在程序中所需使用的主要API如下:♦uintptr_t_beginthread(void(*start_addr)(void*),unsigndstack_size,void*arglist)♦intsendto(SOCKE

4、Ts,constchar*buf,intlenzintflags,conststructsockaddr*tozinttolen)♦intrecvfrom(SOCKETfconstchar*butintlen,intflags,conststructsockaddr*from,intfromIen)♦BOOLSetEvent(HANDLEhEvent)♦DWORDWaitForSingleObject(HANDLEhHandleQWORDdwMilliseconds)♦voidEnterCriti

5、calSection(LPCRITICAL_SECTIONIpCriticalSection)♦voidLeaveCriticalSection(LPCRITICAL_SECTIONIpCriticalSection)实现过程首先,在main函数中进行初始化操作,包括socket的初始化,任务的创建,同步事件的创建;以及程序退出时对上述资源的回收。intmain(intargctchar*argv[]){WSADATAws;^•SAStartup(MAKEWORD(2,2),&ws);Initia

6、1izeC『itica1Section(§ion);event=CreateEvent(0,FALSE,FALSE,0);idA=(HANDLE).beginthread(taskA,0,0);idB=(HANDLE)_beginthread(taskB,0,0);idC=(HANDLE)_beginthread(taskC,0,0);INFINITE);INFINITE);INFINITE);MitForSing1cObjcct(idA,WaitForSing1eObject(idB,W

7、aitForSing1eObject(idC,CloseHand1e(idA);CloseHand1e(idB);CloseHand1e(idC);\SAC1eanup();De1eteCritica1Section(§ion);printf(Mbye・bye”);return0;任务1由main函数创建,每当从键盘接收到一个字符,就使用socket通过UDP协议发送给任务2,它们之间通信是用UDP的2400端口,如果键入的字符为ESC那么就先把它发送给任务2然后退岀运行(其中#

8、defineESC27)。void__cdec1taskA(void*param){intret;charbuff32];SOCKETsock=socket(AF_INET,SOCK.DGRAM.0);sockaddr_inaddr;addr.sin_fami1y=AF_1NET;addr.sin_addr.s_addr=incl_addr("127.0.0.1");addr.sin_porI=htons(2400);whi1e(TRUE){buf[0]=_getch();ret=

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。