欢迎来到天天文库
浏览记录
ID:42594805
大小:46.14 KB
页数:7页
时间:2019-09-18
《基于socket通信系统设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于Socket通信系统设计实验报告一、实验目的和要求 1、掌握VC++集成开发环境编写网络程序的方法;2、掌握客户/服务器(C/S)应用的工作方式;3、学习网络中进程之间通信的原理和实现方法;二、实验内容 所编写的程序应具有如下功能: 1. 具有点对点通信功能,服务器向客户端发送消息,客户端接收服务器发送的消息并显示; 2、具有广播功能,服务器能够向连接到服务器的所有客户端广播消息; 三、编程语言和环境 1. 编程语言C/C++; 2. 编程环境WindowsVisualStudio2010。四、Socket通信的实现WindowsSockets是一
2、套开放的、支持多种协议的Windows下的网络编程接口,利用Sockets套接字能够实现不同主机间的网络通信。Socket实际是在计算机中建立一个通信端口,可以通过这个端口与任何一个具有Socket接口的计算机通信。目前常用的套接字类型是基于TCP/IP协议的流式套接字,其特点是提供一种可靠的、面向连接的数据传输服务。本实验采用基于TCP/IP协议的流式套接字实现发送方与接收方之间的安全通信。其程序实现流程如下图所示:1.服务器端首先调用socket函数来建立一个套接字;套接字创建成功后,调用bind函数将一个IP地址和端口号绑定到己经建立的socket
3、上;绑定完成之后,服务器等待接收客户端的连接请求,调用listen函数实现监听的功能;监听到连接请求之后,服务器调用accept函数生成一个新的套接口描述符,以接受客户的连接请求,之后调用send/receive函数在套接字上进行数据的读/写,直至完成交换;通信结束之后,调用close函数关闭套接字。服务器socket通信程序://创建socket套接字连接if(m_hSocket!=NULL){closesocket(m_hSocket);m_hSocket=NULL;}if(m_hSocket==NULL){m_hSocket=socket(AF_I
4、NET,SOCK_STREAM,0);ASSERT(m_hSocket!=NULL);}m_addr.sin_family=AF_INET;m_addr.sin_addr.S_un.S_addr=INADDR_ANY;m_addr.sin_port=htons(m_nPort);intret=0,error=0;ret=bind(m_hSocket,(LPSOCKADDR)&m_addr,sizeof(m_addr));if(ret==SOCKET_ERROR){TRACE("BindError:%d",(error=WSAGetLastError(
5、)));return;}ret=listen(m_hSocket,2);if(ret==SOCKET_ERROR){TRACE("ListenError:%d",(error=WSAGetLastError()));return;}SOCKETs=accept(m_hSocket,NULL,NULL);if(s==SOCKET_ERROR){TRACE("AcceptError:%d",(error=WSAGetLastError()));return;}//监听接收到信息charbuff[256];ret=recv(s,buff,256,0);
6、if(ret==0
7、
8、ret==SOCKET_ERROR){TRACE("Recvdataerror:%d",WSAGetLastError());return;}char*name=NULL;char*pass=NULL;intlen=0;len=buff[0];name=newchar[len+1];for(inti=0;i9、/发送消息代码CStringstr;if(strcmp(name,"ware")!=0){str=_T("用户名不正确!");TRACE(_T("用户名不正确!"));}else{if(strcmp(pass,"11111")!=0){str=_T("用户密码不正确!");TRACE(_T("用户密码不正确!"));}}if(str.IsEmpty()){str=_T("我是马琰");str+=SendMsg;}char*buf=str.GetBuffer(0);ret=send(s,buf,str.GetLength(),0);if(ret!=10、str.GetLength()){TRACE("Senddataerror:%d
9、/发送消息代码CStringstr;if(strcmp(name,"ware")!=0){str=_T("用户名不正确!");TRACE(_T("用户名不正确!"));}else{if(strcmp(pass,"11111")!=0){str=_T("用户密码不正确!");TRACE(_T("用户密码不正确!"));}}if(str.IsEmpty()){str=_T("我是马琰");str+=SendMsg;}char*buf=str.GetBuffer(0);ret=send(s,buf,str.GetLength(),0);if(ret!=
10、str.GetLength()){TRACE("Senddataerror:%d
此文档下载收益归作者所有