计算机网络-实验四_第1页
计算机网络-实验四_第2页
计算机网络-实验四_第3页
计算机网络-实验四_第4页
计算机网络-实验四_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、淮海工学院计算机工程学院实验报告书课程名: 计算机网络 题 目: 实验四 基于Socket的C/S程序开发 班 级: 学 号: 姓 名: 评语:成绩: 指导教师: 批阅时间: 年 月 日一、 实验目的和要求通过本次实验,熟悉客户-服务器模式的工作原理,使用socket通信一个编写客户端和服务器端之间通信的程序。二、 实验内容使用socket编写客户端和服务器端之间通信的程序,要求:从标准输入获取客户端的输入,将其发送到服务器端,并将服务器端所返回的信息显示在客户端的标准输出。三、 主要实验仪器及材料 装有Windows 2000/XP系统的计算机,局域网,java或其他编程语言。四、 实验原理

2、与源程序原理: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;sockaddr_in ServerAddr;sockaddr_in ClientAddr;int Addrlen;DWORD StartSock()

3、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 create fail!n);WSACleanup();return(-1);ServerAddr.sin_family = AF_INET; ServerAddr.sin_addr.s_ad

4、dr = 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);return(1);DWORD TCPS(); DWORD ConnectProcess() char buff80;Addrlen = sizeof(sockaddr_in);if(listen(sock, 5) 0)print

5、f(搜索出错!);return(-1);printf(正在搜索.n);for(;)sock1 = accept(sock, (struct sockaddr FAR *)&ClientAddr, &Addrlen); for(;)memset(buff, 0, 80);if(recv(sock1, buff, 80, 0) = 0) break; if(strcmp(buff,exit)=0) closesocket(sock1); WSACleanup(); exit(0);printf(接收到的信息是:);printf(buff);printf(n);TCPS();DWORD TCPSen

6、d(char data) int length;length = send(sock1, data, strlen(data), 0); if(length = 0)printf(发送数据出错!n);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

7、!= SOCKET_ERROR)memset(buff, 0, 80);if(recv(sock1, buff, 80, 0)=0)break;printf(buff);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(sock

8、1);exit(0);printf(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#include stdio.h#pra

9、gma 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);ServerAddr.sin_family = AF_INET; ServerAddr.sin_addr.s_ad

10、dr = 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;DWORD CallServer() CreateSocket();if(connect(sock, (struct sockaddr *)&ServerAddr

11、, 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 = 0)printf(发送数据错误!n);closesocket(sock);WSACleanup();return(-1);TCPRecv();return(1);DWORD TCPRecv() char

12、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);printf(n);return(1);int main() char buff80;char num80;StartSock();while(CallServer() = -1);printf(通信连接成功n);printf(请按Enter开始通信n);getchar();for(

13、;)printf(请输入要发送的信息 (输入exit结束通信):);memset(buff, 0, 80);scanf(%s, &num);if(num = 0)break;strcpy(buff, num);if(strcmp(buff, exit) = 0)printf(通信结束!n);TCPSend(buff);closesocket(sock1);exit(0);printf(n);TCPSend(buff);return(0);五、 实验结果图一 客户端连接失败图二 服务器端搜索连接图三 客户端与服务器端建立连接图四 客户端发送信息图五 服务器端与客户端进行通信图六 通信结束六、 实验小结 客户机和服务器都是独立的计算机。当一台连入网络的计算机向其他计算机提供各种网络服务(如数据、文件的共享等)时,它就被叫做服务器。而那些用于访问服务器资料的计算机则被叫做客户机。严格说来,客户机服务器模型并不是从物理分布的角度来定义,它所体现的是一种网络数据访问的实现方式。客户机/服务器模式将一个应用分为两个部分:前端(客户端)、后端(服务器)。在本次实验中用到的Socket通信的原理如下哦:服务器端的步骤(1)建

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论