




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VC API套接字编程VC套接字编程一、服务器端1、创建对话框工程SockServ在上面的图上设置好后,点击“Filish”按钮。2、为工程的对话框类CSockServDlg添加一个套接字变量转到类视图3、为对话框添加控件并设置相应的属性先转到资源视图中,选中对话框资源对话框资源视图资源视图界面如图一个Static,一个编辑框,一个按钮主要控件的属性设置如下(设置方法为选中控件,点击鼠标右键-)属性)(1)按钮(2)编辑框4、添加与编辑框关联的侦听端口变量m_Port类视图添加变量编辑框视图变量类型变量名5、添加按钮的消息映射(其它开发工具叫做事件)双击OnOK将转到对话框类的代码视图中按钮消息的处理过程6、添加代码(在对话框的实现文件SockServDlg.cpp中)(1)对话框初始化函数中的代码BOOL CSockServDlg:OnInitDialog() /WSADATA wsaData;WORD version=MAKEWORD(2,0);int ret=WSAStartup(version,&wsaData);/初始化套接字if (ret!=0) MessageBox(初始化套接字失败,错误提示);return TRUE; (2)按钮单击消息的处理代码void CSockServDlg:OnOk() /套接字不为空时,先关闭套接字 if (m_hSocket!=NULL)closesocket(m_hSocket);m_hSocket=NULL;if (m_hSocket=NULL)m_hSocket=socket(AF_INET,SOCK_STREAM,0);/创建套接字UpdateData(TRUE);/变量与控件的数据交换 /下面的代码用于设定本地的地址信息,保存到结构a中 sockaddr_in a; a.sin_family=AF_INET;a.sin_addr.S_un.S_addr=INADDR_ANY;a.sin_port=htons(m_Port);int ret=0;int err=0;ret=bind(m_hSocket,(LPSOCKADDR)&a,sizeof(a);/绑定套接字if (ret=SOCKET_ERROR)MessageBox(绑定错误,错误提示);return;ret=listen(m_hSocket,2);/开始侦听,缓冲区为2if (ret=SOCKET_ERROR)TRACE(侦听错误);return;int count=0; while(true)SOCKET s =accept(m_hSocket,NULL,NULL);/接受客户端的连接请求 if (s=SOCKET_ERROR) MessageBox(创建会话套接字错误,错误提示); return;count=count+1;/计数器加1 /格式化字符串 CString str;str.Format(你是第%d个访客,count); char* buff=str.GetBuffer(0); ret=send(s,buff,str.GetLength(),0); if (ret!=str.GetLength() MessageBox(数据发送失败,错误提示); return;closesocket(s);/关闭套接字UpdateData(TRUE);二、客户端的设计1、创建对话框工程ClientServ,方法同服务器端第1步骤2、为对话框添加控件并设置相应的属性界面如图2个Static,2个编辑框,一个按钮主要控件的属性设置如下(设置方法为选中控件,点击鼠标右键-)属性)(1)按钮(2)编辑框3、添加与编辑框关联的服务器端口变量m_Port及服务器IP地址的变量M_IP方法类似于服务器段的第4步最后设置结果为:( 注意变量的类型)4、添加按钮的消息映射(同服务器端的第5步)5、添加代码(1)对话框初始化函数中的代码BOOL CSockServDlg:OnInitDialog() /WSADATA wsaData;WORD version=MAKEWORD(2,0);int ret=WSAStartup(version,&wsaData);if (ret!=0) MessageBox(初始化套接字失败,错误提示);return TRUE; (2)按钮单击消息的处理代码(连接服务器)void CSockServDlg:OnOk() SOCKET m_hSocket; if (m_hSocket!=NULL)closesocket(m_hSocket);m_hSocket=NULL;if (m_hSocket=NULL)m_hSocket=socket(AF_INET,SOCK_STREAM,0);/将控件的数据交换到对应的变量中UpdateData(TRUE);/创建一个sockaddr_in,保存服务器的地址信息(IP地址和端口) sockaddr_in a; a.sin_family=AF_INET;/协议簇a.sin_addr.S_un.S_addr=inet_addr(m_IP.GetBuffer(0);/IP地址a.sin_port=htons(m_Port);/端口号int ret=0;int err=0; ret=connect(m_hSocket,(LPSOCKADDR)&a,sizeof(a); if (ret=SOCKET_ERROR)MessageBox(连接服务器失败,错误提示);return;char buff256;/设置接收缓冲区ret =recv(m_hSocket,buff,256
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年文化艺术经纪代理服务合作协议书
- 质权合同担保协议书
- 稻田损毁调解协议书
- 粮食运输安全协议书
- 股东之间合同协议书
- 租赁机械拆迁协议书
- 股份餐饮合同协议书
- 读书之前签定协议书
- 终止食堂承包协议书
- 自愿购买图书协议书
- 【MOOC】天文探秘-南京大学 中国大学慕课MOOC答案
- 市政施工人员安全教育培训
- 《饮料对人体的危害》课件
- 2023年贵州黔东南州州直机关遴选公务员笔试真题
- 江苏省中等职业学校学业水平考试思想政治卷及答案
- 过账协议合同范本
- 建设工程施工合同GF-0201
- 创新工程实践智慧树知到期末考试答案章节答案2024年北京大学等跨校共建
- 吸收塔安装施工方案
- 辛弃疾词《青玉案·元夕》
- 年产邻苯二甲酸二丁酯毕业设计
评论
0/150
提交评论