我们的实例是UNIX下基于BSDSocket的服务器程序和Windows下基于WINSOCK的客户机程序之间的通信.docVIP

我们的实例是UNIX下基于BSDSocket的服务器程序和Windows下基于WINSOCK的客户机程序之间的通信.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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/*客户机菜单*/ BEGIN POPUP Server BEGIN MENUITEM Start..., IDM-START MENUITEM Stop,IDM-STOP END END #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 lp CmdL ine, 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 PASCAL ClientProc(HWND hWnd, unsigned message, UINT wParam, LONG lParam) { int length,i; WSADATAwsaData;/*描述Windows Sockets实现细节的数据结构*/ intStatus; switch (message) { case

文档评论(0)

天马行空 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档