您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 基于SOCKET开发文本服务器客户端文本传输程序
一、实验目的与实验要求1、实验目的使用c++6.0或c#,基于SOCKET开发一个简单的C/S文本传输程序2、实验要求客户端能够发送由标准输入得到的文本,服务器能够接收并将其显示在标准输出上。二、实验设备(环境)及要求计算机系统:windows8.1软件环境:vc++6.0三、实验内容与步骤1、实验1(1)实验内容1、服务器端先初始化socket,并绑定端口,对端口进行监听,等待客户端的连接。2、客户端初始化socket,连接服务器,并发送数据给服务器。3、服务器接受客户端的数据,并返回回复信息。(2)主要步骤工作原理:代码:服务器#includestdio.h#includewinsock.h#pragmacomment(lib,ws2_32.lib)intmain(){//初始化WORDsockVersion=MAKEWORD(2,2);WSADATAwsaData;if(WSAStartup(sockVersion,&wsaData)!=0){return0;}//创建套接字SOCKETslisten=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(slisten==INVALID_SOCKET){printf(socketerror!);return0;}//绑定IP和端口sockaddr_insin;sin.sin_family=AF_INET;sin.sin_port=htons(55555);sin.sin_addr.S_un.S_addr=INADDR_ANY;if(bind(slisten,(LPSOCKADDR)&sin,sizeof(sin))==SOCKET_ERROR){printf(binderror!);return0;}//开始监听if(listen(slisten,5)==SOCKET_ERROR){printf(listenerror!);return0;}SOCKETClient;sockaddr_inremoteAddr;intnAddrlen=sizeof(remoteAddr);charrevData[255];printf(等待连接...\n);Client=accept(slisten,(SOCKADDR*)&remoteAddr,&nAddrlen);if(Client==INVALID_SOCKET){printf(accepterror!);return0;}printf(接受到一个连接:%s\r\n,inet_ntoa(remoteAddr.sin_addr));//接收数据while(1){intret=recv(Client,revData,255,0);if(ret0){revData[ret]=0x00;printf(来自客户端的信息:);printf(revData);printf(\n);}//发送确认信息char*sendData=发送成功。\n\n;send(Client,sendData,strlen(sendData),0);}closesocket(slisten);WSACleanup();return0;}客户端#includestdio.h#includewinsock2.h#pragmacomment(lib,ws2_32.lib)intmain(){WORDsockVersion=MAKEWORD(2,2);WSADATAdata;if(WSAStartup(sockVersion,&data)!=0){return0;}SOCKETsclient=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);if(sclient==INVALID_SOCKET){printf(invalidsocket!\n);return0;}sockaddr_inserAddr;serAddr.sin_family=AF_INET;serAddr.sin_port=htons(55555);serAddr.sin_addr.S_un.S_addr=inet_addr(127.0.0.1);if(connect(sclient,(sockaddr*)&serAddr,sizeof(serAddr))==SOCKET_ERROR){printf(connecterror!\n);closesocket(sclient);return0;}//发送和接收printf(连接成功\n);while(1){char*sendData,*q;sendData=(char*)malloc(sizeof(char)*20);q=sendData;printf(请输入需要传输的信息:);scanf(%s,sendData,20);send(sclient,sendData,strlen(sendData),0);charrecData[500];intret=recv(sclient,recData,500,0);if(ret0){recData[ret]=0x00;printf(recData);}}closesocket(sclient);WSACleanup();return0;}四:实验结果与分析打开服务器,等待连接:客服端连接后:接收到客户端信息后等待再次接收信息客户端成功链接至服务器,等待键入发送信息客户端发送信息后收到的返回确认,等待再次输入信息五:结论(讨论)1、实验结论本实验使用c++6.0,基于SOCKET开发一个简单的C/S文本传输程序。2、讨论该程序还可以加入更多的功能,比如1.服务器可以同时连接几个客户端;2.服务器也可以选择发送数据。六、教师评审教师评语实验成绩(虽然实验主要侧重于验证问题,但是建议各位老师从解决“工程技术问题”,特别是“复杂工程问题”的角度去评审学生实验过程及实验报告,主要内容包括提出问题、分析问题、解决问题及验证问题。要有较详细的评审意见。)签名:日期:
本文标题:基于SOCKET开发文本服务器客户端文本传输程序
链接地址:https://www.777doc.com/doc-4774384 .html