基于tcp的客户端服务器程序代码_第1页
基于tcp的客户端服务器程序代码_第2页
基于tcp的客户端服务器程序代码_第3页
基于tcp的客户端服务器程序代码_第4页
基于tcp的客户端服务器程序代码_第5页
已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论