VC++网络通信的两种基本方法

上传人:ba****u 文档编号:184023964 上传时间:2023-02-01 格式:DOCX 页数:3 大小:10.56KB
返回 下载 相关 举报
VC++网络通信的两种基本方法_第1页
第1页 / 共3页
VC++网络通信的两种基本方法_第2页
第2页 / 共3页
VC++网络通信的两种基本方法_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述
VC+网络通信的两种基本方法说明:主要介绍VC+中 TCP, UDP通信的两种基本方法,并附上代码TCP服务器端1. 在Instance函数里添加初始化函数(在StAfx.h中加入头文件:Afsock.h)AfxSocketInit();2. 网络初始化SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);/创建套接字(socket)。SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);/转换 Unsigned short 为网络字节序 的格式addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);/端口号 6000bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR);将套接字绑定到一个本地地址和端口上(bind)listen(sockSrv,5);/将套接字设为监听模式,准备接收客户请求(listen)。3. 接收和发送函数(此时发生阻塞,一般建立一个发送线程,把接收函数放里面)SOCKADDR_IN addrClient;/ 定义地址族int len=sizeof(SOCKADDR);/初始化这个参数,这个参数必须被初始化while(1)(SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);accept 的第三个参数一定要有初始值。/此时程序在此发生阻塞char sendBuf100;sprintf(sendBuf,发送的字符串,inet_ntoa(addrClient.sin_addr);用返回的套接字和客户端进行通信(send/recv)。send(sockConn,sendBuf,strlen(sendBuf)+1,0);char recvBuf100;recv(sockConn,recvBuf,100,0);printf(%sn,recvBuf);closesocket(sockConn);/关闭套接字。等待另一个用户请求TCP客户端1. 在Initlstance函数里添加初始化函数(在StAfx.h中加入头文件:Afsock.h)AfxSocketInit();2. 客户端初始化SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);创建套接字(s ocket)。SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr=inet_addr(服务器 IP);addrSrv.sin_family=AF_INET;addrSrv.sin_port=htons(6000);/ 服务器端口号3. 连接,发送,接收函数connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR);向服务器发出连接请 求。char recvBuf100;和服务器端进行通信(send/recv)。recv(sockClient,recvBuf,100,0);printf(%sn,recvBuf);send(sockClient,发送字符串,strlen(发送字符串)+1,0);closesocket(sockClient);关闭套接字。采用Csocket方法(子线程里必须包含AfxSocketInit,头文件中必须包含)1.TCP服务器端:AfxSocketInit();CTcpserverDlg *Dlg=(CTcpserverDlg*)lpParameter;CSocket aSocket,ServeSocket;aSocket.Socket();BOOL bOptVal = TRUE;int bOptLen = sizeof(BOOL);aSocket.SetSockOpt(SO_REUSEADDR,(void*)&bOptLen,bOptLen,SOL_SOCKET);aSocket.Bind(6000);aSocket.Listen(10);while(1)aSocket.Accept(ServeSocket);char szRecvMsg256 = 0;char szOutMsg256 = 0;/接收客户端内容:阻塞ServeSocket.Receive(szRecvMsg, 256);sprintf(szOutMsg, Receive Msg: %s ”, szRecvMsg);AfxMessageBox(szOutMsg);/发送内容给客户端ServeSocket.Send(Have Receive The Msg”, 50);/关闭ServeSocket.Close();2.TCP客户端:AfxSocketInit();/创建CSocket对象CSocket aSocket;CString strIP=127.0.0.1”;CString strPort=6000;CString strText=HELLO HAN;/初始化CSocket对象,因为客户端不需要绑定任何端口和地址,所以用默认参数即 可if(!aSocket.Create()char szMsg1024 = 0;sprintf(szMsg, create faild: %d, aSocket.GetLastError();AfxMessageBox(szMsg);return;转换需要连接的端口内容类型int nPort = atoi(strPort);/连接指定的地址和端口if(aSocket.Connect(strIP, nPort)char szRecValue1024 = 0;发送内容给服务器aSocket.Send(strText, strText.GetLength();/接收服务器发送回来的内容(该方法会阻塞,在此等待有内容接收到才继续向下 执行)aSocket.Receive(void *)szRecValue, 1024);AfxMessageBox(szRecValue);elsechar szMsg1024 = 0;sprintf(szMsg, create faild: %d, aSocket.GetLastError();AfxMessageBox(szMsg);关闭aSocket.Close();
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 毕设全套


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!