- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
我们的实例是UNIX下基于BSD Socket的服务器程序和Windows下基于WINSOCK的客户机程序之间的通信。服务器在主机UNIX下直接运行,前台和后台均可;客户机在Windows下运行,带一个参数,即主机的名字。如win client rs6000,rs6000是在HOSTS文件中已定义好的主机名。我们先看客户机程序,首先定义几个宏、菜单资源和部分全局变量。程序1:部分Windows程序源代码(宏、菜单和变量)#define USERPORT 3333/*用户定义端口号*/#define IDM-START101/*“启动”菜单项标志*/#define IDM-EXIT102/*“退出”菜单项标志*/#define UM-SOCKWM-USER+0x100/*用户定义网络消息*/ClientMenu MENU/*客户机菜单*/BEGINPOPUP ServerBEGINMENUITEM Start..., IDM-STARTMENUITEM Stop,IDM-STOPENDEND#include winsock.h/*必须包含winsock.h头文件*/HANDLEhInst;charserver-address = {0};/*服务器地址缓冲区*/charbuffer;/*接收发送缓冲区*/char FAR *lpBuffer=buffer;SOCKETs=0;/*套接字*/struct sockaddr-in dst-addr;/*目标地址*/struct hostent *hostaddr;/*主机地址*/struct hostent hostnm;intcount=0;/*发送接收循环计数器*/客户机程序的窗口主函数很简单,它在注册窗口类、建立窗口后,只是给主窗口函数发送一个用户消息,然后就进入Windows消息处理循环。程序2:部分Windows程序源代码(窗口主函数)int PASCAL WinMain(HANDLE hInstance, HANDLE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){HWND hWnd;MSGmsg;lstrcpy((LPSTR) server-address, lpCmdLine);/*取主机名字*/if (!hPrevInstance)if (!InitApplication(hInstance))return (FALSE);hInst=hInstance;hWnd=CreateWindow(ClientClass,Windows ECHO Client,WS-OVERLAPPEDWINDOW,CW-USEDEFAULT,CW-USEDEFAULT,CW-USEDEFAULT,CW-USEDEFAULT,NULL,NULL,hInstance,NULL);if (!hWnd)return (FALSE);ShowWindow(hWnd,nCmdShow);UpdateWindow(hWnd);/*给主窗口函数发送WM-USER消息*/PostMessage(hWnd,WM-USER,(WPARAM) 0,(LPARAM) 0);while (GetMessage(msg,NULL,NULL,NULL)) {TranslateMessage(msg);DispatchMessage(msg);}return (msg.wParam);}主窗口函数ClientProc是程序的主要部分,它处理相关的消息:在接到消息WM-USER后,它调用函数WSAStartup()初始化Windows Sockets DLL,并检查其版本号,然后通过主机名获取主机地址;在接到消息WM-COMMAND时,如果是命令IDM-START,则调用子程序Client()建立套接字,并试图和服务器建立连接,如果是命令IDM-STOP,则调用函数WSACleanup()终止Windows Sockets DLL,并发出终止应用程序的消息;在接到消息UM-SOCK时,它根据参数lParam指示的网络事件,进行相应的操作,然后选择下一个期望的网络事件。程序3:部分Windows程序源代码(主窗口函数)long FAR PASCALClientProc(HWND hWnd, unsigned message, UINT wParam, LONG lParam){int length,i;WSADATAwsaData;/*描述Windows Sockets实现细节的数据结构*/intStatus;switch (message) {case
文档评论(0)