版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上淮海工学院计算机工程学院实验报告书课程名: 计算机网络 题 目: 实验四 基于Socket的C/S程序开发 班 级: 学 号: 姓 名: 评语:成绩: 指导教师: 批阅时间: 年 月 日专心-专注-专业一、 实验目的和要求通过本次实验,熟悉客户-服务器模式的工作原理,使用socket通信一个编写客户端和服务器端之间通信的程序。二、 实验内容使用socket编写客户端和服务器端之间通信的程序,要求:从标准输入获取客户端的输入,将其发送到服务器端,并将服务器端所返回的信息显示在客户端的标准输出。三、 主要实验仪器及材料 装有Windows 2000/XP系统的计算机,局域
2、网,java或其他编程语言。四、 实验原理与源程序原理:1、创建socket2、打开连接到socket的输入/输出流3、按照一定协议对socket进行读/写操作4、关闭socket源程序服务器端#include "Winsock.h"#include "windows.h"#include "stdio.h"#pragma comment(lib, "wsock32.lib")#define RECV_PORT 2000#define SEND_PORT 3000SOCKET sock, sock1;sockadd
3、r_in ServerAddr;sockaddr_in ClientAddr;int Addrlen;DWORD StartSock() WSADATA WSAData;if(WSAStartup(MAKEWORD(2, 2), &WSAData) != 0) printf("sock init fail!n");return(-1);return(1);DWORD CreateSocket() sock = socket(AF_INET, SOCK_STREAM, 0); if(sock = SOCKET_ERROR)printf("sock creat
4、e fail!n");WSACleanup();return(-1);ServerAddr.sin_family = AF_INET; ServerAddr.sin_addr.s_addr = htonl(INADDR_ANY); ServerAddr.sin_port = htons(RECV_PORT); if(bind(sock, (struct sockaddr FAR *)&ServerAddr, sizeof(ServerAddr) = SOCKET_ERROR)printf("bind is the error");return(-1);re
5、turn(1);DWORD TCPS(); DWORD ConnectProcess() char buff80;Addrlen = sizeof(sockaddr_in);if(listen(sock, 5) < 0)printf("搜索出错!");return(-1);printf("正在搜索.n");for(;)sock1 = accept(sock, (struct sockaddr FAR *)&ClientAddr, &Addrlen); for(;)memset(buff, 0, 80);if(recv(sock1,
6、buff, 80, 0) <= 0) break; if(strcmp(buff,"exit")=0) closesocket(sock1); WSACleanup(); exit(0);printf("接收到的信息是:");printf(buff);printf("n");TCPS();DWORD TCPSend(char data) int length;length = send(sock1, data, strlen(data), 0); if(length <= 0)printf("发送数据出错!n&q
7、uot;);closesocket(sock1); WSACleanup();return(-1);return(1);DWORD TCPRecv(char data) char buff80;Addrlen = sizeof(sockaddr_in);sock1 = accept(sock, (struct sockaddr FAR *)&ServerAddr, &Addrlen);while(sock1 != SOCKET_ERROR)memset(buff, 0, 80);if(recv(sock1, buff, 80, 0)<=0)break;printf(buf
8、f);printf("n");return(1);DWORD TCPS() char buff80;char num80;memset(buff, 0, 80);printf("请输入要发送的信息 (输入exit结束通信):");scanf("%s", &num);strcpy(buff, num); if(strcmp(buff, "exit") = 0)printf("服务器关闭!n");TCPSend(buff);closesocket(sock1);exit(0);printf(
9、"n");TCPSend(buff);return 1;int main()if(StartSock() = -1)return(-1);if(CreateSocket() = -1)return(-1);if(ConnectProcess() = -1)return(-1);if(TCPS() = -1)return (0);StartSock();CreateSocket();for(;)ConnectProcess();return(1);客户端#include "Winsock.h"#include "windows.h"#i
10、nclude "stdio.h"#pragma comment(lib, "wsock32.lib")#define RECV_PORT 2000#define SEND_PORT 4000SOCKET sock, sock1;sockaddr_in ServerAddr;int Addrlen;DWORD StartSock() WSADATA WSAData;if(WSAStartup(MAKEWORD(2,2), &WSAData) != 0) printf("sock init fail!n");return (-1)
11、;ServerAddr.sin_family = AF_INET; ServerAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); ServerAddr.sin_port = htons(RECV_PORT); return 1;DWORD CreateSocket()sock = socket(AF_INET, SOCK_STREAM, 0); if(sock = SOCKET_ERROR)printf("sock create fail!n");WSACleanup();return(-1);return 1
12、;DWORD CallServer() CreateSocket();if(connect(sock, (struct sockaddr *)&ServerAddr, sizeof(ServerAddr) = SOCKET_ERROR) printf("连接失败!n");closesocket(sock);return(-1);return 1;DWORD TCPRecv(); DWORD TCPSend(char data) int length;length = send(sock, data, strlen(data), 0);if(length <=
13、0)printf("发送数据错误!n");closesocket(sock);WSACleanup();return(-1);TCPRecv();return(1);DWORD TCPRecv() char buff80;memset(buff, 0, 80);if(recv(sock, buff, 80,0)<=0)return -1;if(strcmp(buff,"exit")=0)closesocket(sock1);WSACleanup();exit(0);printf("接收到的信息是:");printf(buff);
14、printf("n");return(1);int main() char buff80;char num80;StartSock();while(CallServer() = -1);printf("通信连接成功n");printf("请按Enter开始通信n");getchar();for(;)printf("请输入要发送的信息 (输入exit结束通信):");memset(buff, 0, 80);scanf("%s", &num);if(num <= 0)break;str
15、cpy(buff, num);if(strcmp(buff, "exit") = 0)printf("通信结束!n");TCPSend(buff);closesocket(sock1);exit(0);printf("n");TCPSend(buff);return(0);五、 实验结果图一 客户端连接失败图二 服务器端搜索连接图三 客户端与服务器端建立连接图四 客户端发送信息图五 服务器端与客户端进行通信图六 通信结束六、 实验小结 客户机和服务器都是独立的计算机。当一台连入网络的计算机向其他计算机提供各种网络服务(如数据、文件的共享等)时,它就被叫做服务器。而那些用于访问服务器资料的计算机则被叫做客户机。严格说来,客户机服务器模型并不是从物理分布的角度来定义,它所体现的是一种网络数据访问的实现方式。客户机/服务器模式将一个应用分为两个部分:前端(客户端)、后端(服务器)。在本次实验中用到
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国连锁便利店行业市场深度分析及发展前景预测报告
- 2024-2026年中国证券信息化行业市场全景调研及投资规划建议报告
- 晴纶棉项目可行性研究报告
- 纺织面料工艺鞋项目可行性研究报告
- 学校智慧校园项目可行性研究报告
- 巴陵石化分公司液氨水运设施建设项目环境影响报告表(报批稿)
- 2025年中国药物分子砌块行业市场全景评估及发展战略研究报告
- 2025年中国电热毯行业市场调查研究及投资前景预测报告
- 2025年中国高档酒楼行业市场深度分析及行业发展趋势报告
- 2025承揽合同合作协议范本
- 器乐Ⅰ小提琴课程教学大纲
- 主债权合同及不动产抵押合同(简化版本)
- 服装厂安全生产责任书
- JGJ202-2010建筑施工工具式脚手架安全技术规范
- 液压爬模系统作业指导书
- 2018-2019学年北京市西城区人教版六年级上册期末测试数学试卷
- SFC15(发送)和SFC14(接收)组态步骤
- LX电动单梁悬挂说明书
- 旅行社公司章程53410
- 安防监控系统室外施工安装规范标准
- 螺杆式制冷压缩机操作规程完整
评论
0/150
提交评论