基于tcp的客户端服务器程序代码.docx

上传人:小飞机 文档编号:3384970 上传时间:2023-03-12 格式:DOCX 页数:9 大小:38.68KB
返回 下载 相关 举报
基于tcp的客户端服务器程序代码.docx_第1页
第1页 / 共9页
基于tcp的客户端服务器程序代码.docx_第2页
第2页 / 共9页
基于tcp的客户端服务器程序代码.docx_第3页
第3页 / 共9页
基于tcp的客户端服务器程序代码.docx_第4页
第4页 / 共9页
基于tcp的客户端服务器程序代码.docx_第5页
第5页 / 共9页
亲,该文档总共9页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《基于tcp的客户端服务器程序代码.docx》由会员分享,可在线阅读,更多相关《基于tcp的客户端服务器程序代码.docx(9页珍藏版)》请在三一办公上搜索。

1、基于tcp的客户端服务器程序代码武汉理工大学计算机网络与通信课程设计说明书 服务器端程序 / TODO: Add extra initialization here addr.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

2、_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 CTCP

3、Dlg: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

4、.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)-SetWindo

5、wText(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

6、(num1); num1+=rn; num+=num1; num+=(LPTSTR):inet_ntoa(add1.sin_addr); /LPTSTR与char*等价 num+=客户端:; num+=num2; GetDlgItem(IDC_TEXT)-SetWindowText(num); /显示客户端发来的信息 break; 武汉理工大学计算机网络与通信课程设计说明书 / TODO: Add your control notification handler code here CString str=,str1,str2; GetDlgItem(IDC_SENDTEXT)-GetWin

7、dowText(str); if(str=) else if(:send(s1,str.GetBuffer(1),strlen(str),0)!=SOCKET_ERROR) GetDlgItem(IDC_TEXT)-GetWindowText(str1); str1+=rn; str1+=发送:; MessageBox(发送的消息不能为空); /不能发送空消息 str1+=str; GetDlgItem(IDC_TEXT)-SetWindowText(str1); /显示发送的消息 else GetDlgItem(IDC_TEXT)-GetWindowText(str1); str1+=rn;

8、 str1+=消息发送失败!; GetDlgItem(IDC_TEXT)-SetWindowText(str1); /提示发送消息失败 第 页 武汉理工大学计算机网络与通信课程设计说明书 客户端程序 GetDlgItem(IDC_SENDTEXT)-EnableWindow(false); GetDlgItem(IDC_SEND)-EnableWindow(false); /禁止发送 void CTCPDlg:OnConnect /连接按钮的事件函数 CString str,str1; int port; GetDlgItem(IDC_ADDR)-GetWindowText(str); Get

9、DlgItem(IDC_PORT)-GetWindowText(str1); /输入服务器IP和端口号 if(str=|str1=) 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由网络字节顺序转换为主机字节顺序 第 页 s=:socket(AF_INET,SOCK

10、_STREAM,0); /创建套接字 : WSAAsyncSelect(s,this-m_hWnd,WM_SOCKET, FD_READ); /接收读通知 MessageBox(服务器地址或端口不能为NULL); 武汉理工大学计算机网络与通信课程设计说明书 /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

11、),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); /向服务器发送连接请求 /发送按钮可用 else GetDlgItem(IDC_TEXT)-GetWindowText(str); str+=连接服务器失败!请重试rn; GetDl

12、gItem(IDC_TEXT)-SetWindowText(str); GetDlgItem(IDC_ADDR)-EnableWindow(false); /禁止再在输入服务器ip GetDlgItem(IDC_PORT)-EnableWindow(false); /禁止再输入服务器的端口号 第 页 武汉理工大学计算机网络与通信课程设计说明书 void CTCPDlg:OnSend /发送按钮的事件函数 / TODO: Add your control notification handler code here CString str,str1; GetDlgItem(IDC_SENDTEX

13、T)-GetWindowText(str); if(str=) 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); /显示发送的消息 MessageBox(发送的消息不能为空); /不能发送空消息 else GetDlgItem(IDC_TEXT)-GetWindowText(str1); str1+=rn

14、; 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(int i=0;iGetWindowText(num); num+=rn; num+=服务器:; num+=num2; GetDlgItem(IDC_TEXT)-SetWindowText(num); void CTCPDlg:Onclose /断开按钮的事件函数 / TODO: Add your control notification handler code here closesocket(s); 第 页

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号