




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学计算机网络与通信课程设计说明书服务器端程序 / TODO: Add extra initialization hereaddr.sin_family=AF_INET;/TCP IPv4 addr sin_port=htons(8090); /指定端口号,动态端口的范围从1024到65535,这里使用8090 addr.sin_addr.S_un.S_addr=INADDR_ANY; /*机器上可能有多块网卡,也就有多个IP地址, 如果指定为INADDR_ANY,那么系统将绑定默认的网卡即IP地址*/ s=:socket(AF_INET,SOCK_STREAM,0); /利用socket函数创建套接字 :bind(s,(sockaddr*)&addr,sizeof(addr);/调用bind函数把套接字s绑定到本地地址和指定端口号上 :listen(s,5); /s监听网络中的所有客户机:WSAAsyncSelect(s,this-m_hWnd,WM_SOCKET,FD_ACCEPT|FD_READ);/接收读和连接通知 GetDlgItem(IDC_TEXT)-EnableWindow(true); /激活编辑框显示 GetDlgItem(IDC_ADDR)-SetWindowText(服务器开始监听!);void CTCPDlg:OnSocket(WPARAM wParam,LPARAM lParam) CString str; CString str13; CString str14; unsigned short int str15; char cs100=0;switch (lParam)/响应通知 case FD_ACCEPT: int lenth=sizeof(add1); s1=:accept(s,(sockaddr*)&add1,&lenth); /*s1为服务器和客户端通信的套接字 add1为客户端通信的套接字*/ n=n+1; str13.Format(有%d客户已经连接上了,n); /str13=有n客户已经连接上了 str13+=rn; str13+=:inet_ntoa(add1.sin_addr); /ip地址转换成点分十进制的字符串 str13+=登陆; GetDlgItem(IDC_TEXT)-GetWindowText(str); str13+=rn; str+=str13; GetDlgItem(IDC_TEXT)-SetWindowText(str); /显示已经连接以及连接的客户端 str14=:inet_ntoa(add1.sin_addr); GetDlgItem(client_ip)-SetWindowText(str14); /显示客户端的ip str15=htons(add1.sin_port); SetDlgItemInt(client_port,str15,1); /显示客户端的port CString st; st=I am a server.; :send(s1,st.GetBuffer(1),strlen(st),0);break;case FD_READ: CString num=,num1=,num2=; :recv(s1,cs,100,0); /接收客户端的数据 for(int i=0;iGetWindowText(num1); num1+=rn; num+=num1; num+=(LPTSTR):inet_ntoa(add1.sin_addr); /LPTSTR与char*等价 num+=客户端:; num+=num2; GetDlgItem(IDC_TEXT)-SetWindowText(num); /显示客户端发来的信息 break;void CTCPDlg:OnSend() /发送按钮的事件函数/ TODO: Add your control notification handler code hereCString str=,str1,str2;GetDlgItem(IDC_SENDTEXT)-GetWindowText(str);if(str=)MessageBox(发送的消息不能为空);/不能发送空消息elseif(:send(s1,str.GetBuffer(1),strlen(str),0)!=SOCKET_ERROR) GetDlgItem(IDC_TEXT)-GetWindowText(str1);str1+=rn;str1+=发送:; str1+=str; GetDlgItem(IDC_TEXT)-SetWindowText(str1);/显示发送的消息 elseGetDlgItem(IDC_TEXT)-GetWindowText(str1); str1+=rn;str1+=消息发送失败!; GetDlgItem(IDC_TEXT)-SetWindowText(str1); /提示发送消息失败客户端程序GetDlgItem(IDC_SENDTEXT)-EnableWindow(false);GetDlgItem(IDC_SEND)-EnableWindow(false); /禁止发送s=:socket(AF_INET,SOCK_STREAM,0);/创建套接字: WSAAsyncSelect(s,this-m_hWnd,WM_SOCKET, FD_READ);/接收读通知void CTCPDlg:OnConnect() /连接按钮的事件函数 CString str,str1; int port; GetDlgItem(IDC_ADDR)-GetWindowText(str); GetDlgItem(IDC_PORT)-GetWindowText(str1); /输入服务器IP和端口号 if(str=|str1=) MessageBox(服务器地址或端口不能为NULL); else port=atoi(str1.GetBuffer(1); /把字符串形式的port转换成整型数 addr.sin_family=AF_INET; addr.sin_addr.S_un.S_addr=inet_addr(str.GetBuffer(1); /将点分十进制的IP转换成长整数型数 addr.sin_port=ntohs(port); /将无符号短整形port由网络字节顺序转换为主机字节顺序 /addr存储服务器套接字信息,s存储客户端套接字信息 GetDlgItem(IDC_TEXT)-SetWindowText(正在连接服务器.rn); if(:connect(s,(sockaddr*)&addr,sizeof(addr) /向服务器发送连接请求 CString st; st=I am aclient; :send(s,st.GetBuffer(1),strlen(st),0); GetDlgItem(IDC_TEXT)-GetWindowText(str); str+=连接服务器成功!rn; GetDlgItem(IDC_TEXT)-SetWindowText(str); GetDlgItem(IDC_SENDTEXT)-EnableWindow(true); /发送框可用 GetDlgItem(IDC_SEND)-EnableWindow(true); /发送按钮可用 GetDlgItem(IDC_ADDR)-EnableWindow(false); /禁止再在输入服务器ip GetDlgItem(IDC_PORT)-EnableWindow(false); /禁止再输入服务器的端口号 else GetDlgItem(IDC_TEXT)-GetWindowText(str); str+=连接服务器失败!请重试rn; GetDlgItem(IDC_TEXT)-SetWindowText(str); void CTCPDlg:OnSend() /发送按钮的事件函数/ TODO: Add your control notification handler code hereCString str,str1;GetDlgItem(IDC_SENDTEXT)-GetWindowText(str);if(str=)MessageBox(发送的消息不能为空);/不能发送空消息else if(:send(s,str.GetBuffer(1),strlen(str),0)!=SOCKET_ERROR)GetDlgItem(IDC_TEXT)-GetWindowText(str1);str1+=rn;str1+=发送:+str;GetDlgItem(IDC_TEXT)-SetWindowText(str1);/显示发送的消息 else GetDlgItem(IDC_TEXT)-GetWindowText(str1); str1+=rn;str1+=消息发送失败!; GetDlgItem(IDC_TEXT)-SetWindowText(str1); /提示发送消息失败void CTCPDlg:OnSocket(WPARAM wParam,LPARAM lParam)char cs100=0; if(lParam=FD_READ)CString num=,num2=;:recv(s,cs,100,0);for
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 急诊专科护士汇报
- 康复辅具语音交互技术-洞察及研究
- SMT表面贴装技术在高端制造业的应用案例分析考核试卷
- 清洁机器人智能路径规划技术考核试卷
- 个性化服务中的数据隐私保护考核试卷
- 兽药批发商品牌忠诚度提升策略考核试卷
- 企业财务危机的应急资金储备机制考核试卷
- 热成像技术食品新鲜度检测-洞察及研究
- 公司文化培训制度
- 休闲秋千与吊椅设计创新创业项目商业计划书
- 2025年河北交通投资集团公司招聘笔试题库含答案解析
- 机场行业安全生产培训
- 2024年05月陕西秦农农村商业银行股份有限公司数字化及金融科技劳务派遣人员招考笔试历年参考题库附带答案详解
- 医药代表的临床经验分享
- 《大数据导论》期末考试复习题库(含答案)
- 艺术家进校园活动安排计划
- (电大)国开大学2024年秋《铸牢中华民族共同体意识》试卷1-3参考答案
- 2025版国家开放大学法律事务专科《宪法学》期末考试总题库
- 【MOOC】融合新闻:通往未来新闻之路-暨南大学 中国大学慕课MOOC答案
- 电信总经理谈服务
- 防雷应急演练方案
评论
0/150
提交评论