版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 疫情答题活动策划方案(3篇)
- 体育股内部管理制度(3篇)
- 2026福建海峡人力资源股份有限公司漳州分公司招聘1人参考考试题库及答案解析
- 2026北京积水潭医院聊城医院博士研究生引进22人考试参考题库及答案解析
- 2026广西柳州市柳北区雅儒街道办事处招聘公益性岗位人员1人笔试模拟试题及答案解析
- 2026年河北大学附属医院公开选聘工作人员备考考试题库及答案解析
- 电磁感应补充题目
- 2026浙江浙建好房子装饰科技有限公司招聘参考考试题库及答案解析
- 2026西藏昌都市八宿县发展改革和经信商务局招聘专业技术人员1人考试备考题库及答案解析
- 九江市公安局柴桑分局2026年度公开招聘警务辅助人员备考考试题库及答案解析
- 成都印钞有限公司2026年度工作人员招聘参考题库含答案
- GB/T 28743-2025污水处理容器设备通用技术条件
- 人工智能-历史现在和未来
- 半导体厂务项目工程管理 课件 项目7 气体的分类
- 安徽省亳州市2025届高三上学期期末质量检测生物试卷(含答案)
- 2026年1月上海市春季高考数学试题卷(含答案及解析)
- 深度解析(2026)DZT 0064.45-1993地下水质检验方法 甘露醇-碱滴定法 测定硼
- 3.2地区产业结构变化高中地理人教版选择性必修2
- 2025年3D建模服务保密协议
- 各种挖机租赁合同范本
- 油料运输应急预案
评论
0/150
提交评论