社会化媒体营销

【+】

基于WinSock的简单TCP网络编程实验报告

冰女烦恼

实验报告

实验课程名称: 通信软件基础实验课

院: 软件工程学院

业: 软件工程

指导教师:

报告人姓名:

号:

级:

期:

实验

成绩

实验项目名称

基于WinSock的简单TCP网络编程

一、实验目的与要求:

1、学习和掌握Socket编程的面向连接编程模型。

2、学习和掌握基于WinSockTCP网络编程方法。

二、实验设备及软件:

笔记本电脑、Window 7操作系统、Microsoft Visual Studio 2012

三、实验方法(原理、流程图)

流程图:

四、实验过程、步骤及内容

实验代码:

server.h

#define MAX_CLIENT 10 //同时服务的client数目上限

#define MAX_BUF_SIZE 65535 //缓存区的大小

const u_short UDPSrvPort = 2345; //ServerUDP端口

const char START_CMD[] = "START";

const char GETCURTIME_CMD[] = "GET CUR TIME";

//传递给TCP线程的结构化参数

struct TcpThreadParam

{

SOCKET socket;

sockaddr_in addr;

};

DWORD WINAPI TcpServeThread(LPVOID lpParam); //TCP线程的线程函数

DWORD WINAPI UdpServer(LPVOID lpParam); //UDP服务器线程

server.cpp

#include "stdafx.h"

#include "iostream.h"

#include "stdio.h"

#include "string.h"

#include "time.h"

#include "WinSock2.h"

#include "Windows.h"

#include "server.h"

#pragma comment (lib, "Ws2_32.lib")

#pragma pack(1) //结构在存储时按字节对齐

long TcpClientCount = 0;

int main(int argc, char* argv[])

{

////检查命令行参数

//if(argc != 2)

//{

// cerr << "Worng format!\nCorrect usage: Server.exe ";

// return -1;

//}

//初始化winsock2环境

WSADATA wsa;

if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0)

{

cerr << "\nFailed to initialize the winsock 2 stack\n"

<< "error code: " << WSAGetLastError() << endl;

return -1;

}

//创建UDP服务器

DWORD dwThreadId;

CreateThread(NULL, 0, UdpServer, NULL, 0, &dwThreadId);

//创建用于侦听的TCP Server Socket

SOCKET ListenSocket = socket(AF_INET, SOCK_STREAM, 0);

//获取TCP端口号

u_short ListenPort = (u_short)atoi(argv[1]);

//获取本机名

char hostname[256];

gethostname(hostname, sizeof(hostname));

//获取本地IP地址

hostent *pHostent = gethostbyname(hostname);

//填充本地TCP Socket地址结构

SOCKADDR_IN ListenAddr;

memset(&ListenAddr, 0, sizeof(SOCKADDR_IN));

ListenAddr.sin_family = AF_INET;

ListenAddr.sin_port = htons(ListenPort);

ListenAddr.sin_addr = *(in_addr*)pHostent->h_addr_list[0];

//绑定TCP端口

if (bind(ListenSocket, (sockaddr*)&ListenAddr, sizeof(ListenAddr)) == SOCKET_ERROR)

{

cerr << "\nFailed to bind the ListenSocket\n"

<< "error code: " << WSAGetLastError() << endl;

return -1;

}

//

if ((listen(ListenSocket, SOMAXCONN)) == SOCKET_ERROR)

{

cerr << "\nFailed to listen the ListenSocket\n"

<< "error code: " << WSAGetLastError() << endl;

return -1;

}

cout << "TCP Server Started On TCP Port: "<< ListenPort << endl << endl;

SOCKET TcpSocket;

SOCKADDR_IN TcpClientAddr;

while (TRUE)

{

//接受客户端连接请求

int iSockAddrLen = sizeof(sockaddr);

if ((TcpSocket = accept(ListenSocket, (sockaddr*)&TcpClientAddr, &iSockAddrLen)) == SOCKET_ERROR)

{

cerr << "\nFailed to accept the client TCP Socket\n"

<< "error code: " << WSAGetLastError() << endl;

return -1;

}

//TCP线程数达到上限,停止接受新的Client

if (TcpClientCount >= MAX_CLIENT)

{

closesocket(TcpSocket);

cout << "Connection from TCP client "<< inet_ntoa(TcpClientAddr.sin_addr) << ":" << ntohs(TcpClientAddr.sin_port) << " refused for max client num\n" << endl;

continue;

}

cout << "Connection from TCP client "<< inet_ntoa(TcpClientAddr.sin_addr) << ":" << ntohs(TcpClientAddr.sin_port) << " accepted\n" << endl;

TcpThreadParam Param;

Param.socket = TcpSocket;

Param.addr = TcpClientAddr;

//创建TCP服务线程

DWORD dwThreadId;

CreateThread(NULL, 0, TcpServeThread, &Param, 0, &dwThreadId);

InterlockedIncrement(&TcpClientCount);

cout << "Current Number of TCP Clients: " << TcpClientCount << '\n' << endl;

}

closesocket(ListenSocket);

WSACleanup();

return 0;

}

//TCP服务线程

DWORD WINAPI TcpServeThread(LPVOID lpParam)

{

char ServerTCPBuf[MAX_BUF_SIZE];

//获取线程参数

SOCKET TcpSocket = ((TcpThreadParam*)lpParam)->socket;

SOCKADDR_IN TcpClientAddr = ((TcpThreadParam*)lpParam)->addr;

//输出提示信息

cout<<"Thread: "<< GetCurrentThreadId() << " is serving client from " << inet_ntoa(TcpClientAddr.sin_addr) << ":" << ntohs(TcpClientAddr.sin_port) << endl << endl;

//发送端口号+"START"

sprintf(ServerTCPBuf, "%5d%s", UDPSrvPort, START_CMD);

send(TcpSocket, ServerTCPBuf, strlen(ServerTCPBuf), 0);

cout << "Waiting for command from Client(s)..." << endl << endl;

int TCPBytesReceived;

time_t CurSysTime;

while (TRUE)

{

//读取client发来的请求命令: "GET CUR TIME"

memset(ServerTCPBuf, '\0', sizeof(ServerTCPBuf));

TCPBytesReceived = recv(TcpSocket, ServerTCPBuf, sizeof(ServerTCPBuf), 0);

//TCPBytesReceived值为0表示client端已正常关闭连接

//TCPBytesRecieved值为SOCKET_ERROR则表示socket的状态不正常,无法继续数据通讯

//两种情况下都表明本线程的任务已结束,需要退出

if (TCPBytesReceived == 0 || TCPBytesReceived == SOCKET_ERROR)

{

cout << "Client from " << inet_ntoa(TcpClientAddr.sin_addr) << ":" << ntohs(TcpClientAddr.sin_port) << " disconnected. Thread: " << GetCurrentThreadId() <<" is ending" << endl << endl;

break;

}

//检查收到的字符串是否为命令:"GET CUR TIME"

if (strcmp(ServerTCPBuf, GETCURTIME_CMD) != 0)

{

cout << "Unknowm command from Client " << inet_ntoa(TcpClientAddr.sin_addr) << endl << endl;

continue;

}

cout << "Request for Current time from client " << inet_ntoa(TcpClientAddr.sin_addr) << ":" << ntohs(TcpClientAddr.sin_port) << " by TCP" << endl << endl;

//获取系统时间并发送给client

time(&CurSysTime);

memset(ServerTCPBuf, '\0', sizeof(ServerTCPBuf));

strftime(ServerTCPBuf, sizeof(ServerTCPBuf), "%Y-%m-%d %H:%M:%S", localtime(&CurSysTime));

send(TcpSocket, ServerTCPBuf, strlen(ServerTCPBuf), 0);

cout << "Server Current Time: " << ServerTCPBuf << '\n' << endl;

}

InterlockedDecrement(&TcpClientCount);

closesocket(TcpSocket);

return 0;

}

//UDP服务器线程

DWORD WINAPI UdpServer(LPVOID lpParam)

{

char ServerUDPBuf[MAX_BUF_SIZE]; //UDP Buffer

SOCKADDR_IN UDPClientAddr; //存储Client的地址信息

//创建UDP server socket

SOCKET UDPSrvSocket = socket(AF_INET, SOCK_DGRAM, 0);

//获取本机名

char hostname[256];

gethostname(hostname, sizeof(hostname));

//获取本地IP地址

hostent *pHostent = gethostbyname(hostname);

//填充本地UDP Socket地址结构

SOCKADDR_IN UDPSrvAddr;

memset(&UDPSrvAddr, 0, sizeof(SOCKADDR_IN));

UDPSrvAddr.sin_family = AF_INET;

UDPSrvAddr.sin_port = htons(UDPSrvPort);

UDPSrvAddr.sin_addr = *(in_addr*)pHostent->h_addr_list[0];

//绑定UDP端口

if (bind(UDPSrvSocket, (sockaddr*)&UDPSrvAddr, sizeof(UDPSrvAddr)) == SOCKET_ERROR )

{

cerr << "bind() failed for UDPSrvSocket\n"

<< "error code: " << WSAGetLastError() << endl;

return -1;

}

cout<<"UDP Server Started On UDP Port: " << UDPSrvPort << endl << endl;

while (TRUE)

{

memset(ServerUDPBuf, '\0', sizeof(ServerUDPBuf));

//接收UDP请求

int iSockAddrLen = sizeof(sockaddr);

if ((recvfrom(UDPSrvSocket, ServerUDPBuf, sizeof(ServerUDPBuf), 0, (sockaddr*)&UDPClientAddr, &iSockAddrLen)) == SOCKET_ERROR)

{

cerr << "recvfrom() failed for UDPSrvSocket\n"

<< "error code: " << WSAGetLastError() << endl;

continue;

}

cout << "Client Command: Echo\n\n";

cout << "\"" << ServerUDPBuf<< "\"" << " received from " << inet_ntoa(UDPClientAddr.sin_addr) << ":" << ntohs(UDPClientAddr.sin_port) << " by UDP" << endl << endl;

//ECHO

iSockAddrLen = sizeof(sockaddr);

if ((sendto(UDPSrvSocket, ServerUDPBuf, strlen(ServerUDPBuf), 0, (sockaddr*)&UDPClientAddr, iSockAddrLen)) == SOCKET_ERROR )

{

cerr << "sendto() failed for UDPSrvSocket\n"

<< "error code: " << WSAGetLastError() << endl;

continue;

}

cout << "Echo " << "\"" << ServerUDPBuf << "\"" << " to clinet " << inet_ntoa(UDPClientAddr.sin_addr) << ":" <" by UDP" << endl << endl;

}

return 0;

}

client.exe

#include "stdafx.h"

#include "WinSock2.h"

#include "iostream.h "

#include "stdio.h"

#pragma comment (lib,"Ws2_32.lib")

#define MAX_BUF_SIZE 65535

char ClientBuf[MAX_BUF_SIZE];

const char START_CMD[] = "START";

const char GETCURTIME_CMD[] = "GET CUR TIME";

//输出用户选择界面

void UserPrompt()

{

cout << "Input the corresponding Num to select what you want the program to do" << endl << endl

<< "\t1. Get current time(TCP)" << endl

<< "\t2. Echo Mode(UDP)" << endl

<< "\t3. Exit the program" << endl << endl

<< "Enter Your choice: ";

}

int main(int argc, char* argv[])

{

unsigned short ServerUDPPort;

SOCKET cTCPSocket,cUDPSocket;

WSADATA wsadata;

SOCKADDR_IN TCPServer,UDPServer,RecvFrom;

int RecvFromLength=sizeof(RecvFrom);

char UserChoice;

char portnum[5];

unsigned long BytesReceived,BytesSent;

int RetValue;

//检查命令行参数

if (argc != 3)

{

cout<<"Worng format!"<"Correct usage: Client.exe "< return 1;

}

u_long ServerIP = inet_addr(argv[1]);

u_short ServerTCPPort = (u_short)atoi(argv[2]);

//初始化winsock

if( ( RetValue=WSAStartup(MAKEWORD(2,2),&wsadata) ) !=0 )

{

printf("WSAStartup() failed with error %d\n", RetValue);

return 2;

}

//创建TCP Socket

if( (cTCPSocket=WSASocket(AF_INET,SOCK_STREAM,0,NULL,0,WSA_FLAG_OVERLAPPED) ) ==INVALID_SOCKET)

{

printf("WSASocket() for cTCPSocket failed with error %d\n" ,WSAGetLastError() );

return 3;

}

//创建UDP Socket

if( (cUDPSocket=WSASocket(AF_INET,SOCK_DGRAM,0,NULL,0,WSA_FLAG_OVERLAPPED) ) ==INVALID_SOCKET)

{

printf("WSASocket() for cUDPSocket failed with error %d\n" ,WSAGetLastError() );

return 4;

}

TCPServer.sin_family=AF_INET;

TCPServer.sin_port=htons(ServerTCPPort);

TCPServer.sin_addr.S_un.S_addr=ServerIP;

//通过TCP Socket连接server

if ((RetValue=WSAConnect(cTCPSocket,(sockaddr *)&TCPServer,sizeof(TCPServer),NULL,NULL,NULL,NULL) )==SOCKET_ERROR)

{

printf("WSAConnect() failed for cTCPSocket with error %d\n",WSAGetLastError() );

printf("Can't connect to server.\n");

return 5;

}

//server建立连接后读取Server发送过来的Server UDP端口和"START"

BytesReceived=recv(cTCPSocket,ClientBuf,sizeof(ClientBuf),0 );

if (BytesReceived == 0 || BytesReceived == SOCKET_ERROR)

{

cout<"Server refused the connection or recv failed"< return 6;

}

memcpy(portnum,ClientBuf,sizeof(portnum));

ServerUDPPort=(u_short)atoi(portnum);

if (strcmp(START_CMD,ClientBuf+5)!=0)

{

cout<"Server did not return right beginning indicator"< return 6;

}

else

{

cout<"OK, NOW the server is ready for your service!"< }

UDPServer.sin_family=AF_INET;

UDPServer.sin_port=htons(ServerUDPPort);

UDPServer.sin_addr.S_un.S_addr=ServerIP;

while(TRUE)

{

//输出提示信息

UserPrompt();

cin>>UserChoice;

switch(UserChoice)

{

case '1'://通过TCP得到server的系统时间

//发送命令

memset(ClientBuf,'\0',sizeof(ClientBuf));

sprintf(ClientBuf,"%s",GETCURTIME_CMD);

if ((BytesSent=send(cTCPSocket,ClientBuf,strlen(ClientBuf),0) )==SOCKET_ERROR)

{

printf("send() failed for cTCPSocket with error %d\n",WSAGetLastError() );

printf("Can not send command to server by TCP.Maybe Server is down.\n");

return 7;

}

//读取server发来的系统时间并显示

memset(ClientBuf,'\0',sizeof(ClientBuf) );

if ((BytesReceived=recv(cTCPSocket,ClientBuf,sizeof(ClientBuf),0) )==SOCKET_ERROR)

{

printf("recv() failed for cTCPSocket with error %d\n",WSAGetLastError() );

printf("Can not get server current systime.Maybe Maybe Server is down.\n");

return 8;

}

cout<<"Server Current Time: "< break;

case '2': //通过UDP实现ECHO

//提示用户输入文本

memset(ClientBuf,'\0',sizeof(ClientBuf) );

cout<<"请输入任意文本信息,按回车键后将发送至Server."< gets(ClientBuf);

//发送文本

if ((BytesSent=sendto(cUDPSocket,ClientBuf,strlen(ClientBuf),0,(sockaddr *)&UDPServer,sizeof(UDPServer) ) ) ==SOCKET_ERROR)

{

printf("sendto() failed for cUDPSocket with error %d\n",WSAGetLastError() );

printf("Can not send message by UDP.Maybe Server is down.\n");

return 9;

}

//读取ECHO

memset(ClientBuf,'\0',sizeof(ClientBuf) );

if ((BytesReceived=recvfrom(cUDPSocket,ClientBuf,sizeof(ClientBuf),0,(sockaddr *)&RecvFrom, &RecvFromLength ) ) ==SOCKET_ERROR)

{

printf("recvfrom () failed for cUDPSocket with error %d\n",WSAGetLastError() );

printf("Can't get Echo Reply from server by UDP.Maybe Server is down.\n");

return 10;

}

//检查ECHO是否来自Server

if(UDPServer.sin_addr.S_un.S_addr==RecvFrom.sin_addr.S_un.S_addr &&UDPServer.sin_port==RecvFrom.sin_port)

{

cout<<"Get Echo From Server: "< }

else

{

cout<<"NO Echo From Server"< }

break;

case '3': //释放资源,退出程序

closesocket(cTCPSocket);

closesocket(cUDPSocket);

WSACleanup();

cout<<"program exit"< return 10;

default:

cout<<"Wrong choice ,should be 1,2 or 3"< }

}

return 11;

}

五、实验数据(现象)处理分析

六、实验结论:

通过这次试验学会了客户端与服务端的建立联系,掌握了两者之间的联系。

七、指导教师批阅意见:

成绩评定:

指导教师签字:

八、备注:注册信息填写充分

加载 全文

“基于WinSock的简单TCP网络编程实验报告”相关信息

基于WinSock的简单TCP网络编程实验报告winsock tcp,winsock编程,vb winsock编程实例,winsock网络编程经络,winsock编程实例,winsock网络编程,winsock2编程,winsock编程源代码,c winsock编程,netsh winsock reset,winsock,winsock是什么,winsock修复,winsock reset,重置winsock
基于WinSock的简单TCP网络编程实验报告

基于WinSock的简单TCP网络编程实验报告

报告人姓名: 学班学号: 级: 期: 实验 成绩 实验项目名称 基于 WinSock 的简单 TCP 网络编程 一、实验目的与要求: 1、学习和掌握 Socket 编程的面向连接编程...

贡献者:冰女烦恼

网络编程_基于TCP的简易聊天室_实验报告

网络编程_基于TCP的简易聊天室_实验报告

网络编程_基于TCP的简易聊天室_实验报告_计算机软件及应用_IT/计算机_专业资料。...<WinSock2.h> #include <string> #include #include "ClientInfo.h" using...

贡献者:泪水冲破容颜

网络编程 基于TCP的简易聊天室 实验报告

网络编程 基于TCP的简易聊天室 实验报告

网络编程 基于TCP的简易聊天室 实验报告_调查/报告_表格/模板_实用文档。网络编程...<WinSock2.h> #include <string> #include #include "ClientInfo.h" using...

贡献者:小小book吧

基于WinSock API的TCP网络程序的编写与分析

基于WinSock API的TCP网络程序的编写与分析

基于WinSock API的TCP网络程序的编写与分析_计算机软件及应用_IT/计算机_专业资料。网络协议编程实验报告TCPIP 《网络协议编程》实验报告单 实验一报告单班 级 ...

贡献者:hemeng霞

Windows网络编程《一》——WinSock编程

Windows网络编程《一》——WinSock编程

Windows网络编程《一》——WinSock编程 隐藏>> WinSock 编程实验报告 班级:10 网...实验内容与分析设计: 编写一个基于某种 I/O 方法的 TCP 服务器和 TCP 客户...

贡献者:smilehthl

简单TCP通信程序设计实验报告

简单TCP通信程序设计实验报告

简单TCP通信程序设计实验报告_计算机软件及应用_IT/计算机_专业资料。计算机网络与...四,实验内容与步骤《server》 1,加载 WinSock 动态链接库 函数原型: int...

贡献者:9号同学爱唱歌

网络编程文件传输实验报告

网络编程文件传输实验报告

网络工程黄梅根实验室名称: 任课教师: 网络编程 网络编程 基于 TCP 的网络文件...四、 源代码服务器端 #include <WINSOCK2.H> #include <stdio.h> #pragma ...

贡献者:源缘_园

基于TCP的文件传输实验报告

基于TCP的文件传输实验报告

基于TCP的文件传输实验报告_IT/计算机_专业资料。介绍关于以TCP为基础的文件传输...协议, 控件,网络编程,文件传输,断点续传。 关键词 :TCP/IP 协议,Winsock 控件...

贡献者:方芳叶

TCP、IP网络环境编程实验报告《1-4》

TCP、IP网络环境编程实验报告《1-4》

TCP、IP网络环境编程实验报告《1-4》_工学_高等教育_教育专区。计算机与信息学院...基于 WinSock 2 的 IP 多播应用程序 成绩 指导教师 林要华 林要华 林要华...

贡献者:福建好友

网络编程实验报告

网络编程实验报告

网络编程实验报告_计算机软件及应用_IT/计算机_专业资料。实验一 TCP Socket API...《2,2》,&wsd》; // 加载协议,使用 Winsock 2.2 版 m_client = socket《...

贡献者:万剑归宗王

VisioTCP

实验四--TCP 协议分析

实验四--TCP 协议分析

郑州轻工业学院本科 实验报告 设计题目:实验四 TCP 协议分析 学生姓名: 系别:计算机与通信工程学院 专业: 班级: 学号: 指导教师: 实验四 TCP 协议分析 一、 ...

贡献者:手捧九支玫瑰

TCP端口大全

TCP端口大全

TCP端口大全_计算机硬件及网络_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档TCP端口大全_计算机硬件及网络_IT/计算机_专业资料。TCP端口大全 ...

贡献者:李L胜S波B

TCP连接的建立和释放

TCP连接的建立和释放

TCP 连接的建立和释放 TCP 首部格式 先看 TCP 报文段的格式,如下; TCP 报文段首部的前 20 个字节是固定的,后面有 4N 字节是根据需要而增加的选项。因此 TCP...

贡献者:coolhzzmy3

TCP的定义及作用

TCP的定义及作用

TCP的定义及作用_计算机硬件及网络_IT/计算机_专业资料。TCP 的定义及作用什么是 TCP/IP 网络协议? 网络协议就是网络中《包括互联网》传递、管理信息的一些规范。...

贡献者:zhangmin199518

TCP_图文

TCP_图文

《网络协议》实验报告 实验 名称:传输控制协议《TCP》 组别机器号:第六组主机 B 班学姓级:网络 13-3 班号:1320020306 名:黄腾飞 指导 教师:陈虹 成绩: 1 一...

贡献者:呼呼咴咴

无线网络中的TCP拥塞控制

无线网络中的TCP拥塞控制

无线网络中的TCP拥塞控制_互联网_IT/计算机_专业资料。计算机网络论文 无线网络中的 TCP 拥塞控制 制作人: 唐鲁琦 学号: 131110520 目录引言 ...计算机网络论文 ...

贡献者:825016238

TCP增强总结《一》

TCP增强总结《一》

TCP增强总结《一》_学习总结_总结/汇报_实用文档。TCP-peach,TCP-westwood,TCP-Hybla,snoop协议等总结对比TCP 增强总结《一》 1 TCP 问题分析传输控制协议 TCP 最初...

贡献者:紫色忧郁梦

TCP头结构

TCP头结构

TCP 头结构 TCP 头结构 TCP 头结构 TCP 协议头最少20个字节,包括以下的区域《由于翻译不禁相同,文章中给出相应的英 文单词》 : TCP 源端口《Source Port》:16...

贡献者:liangweichao88

基于WinSock的简单TCP网络编程实验报告

基于WinSock的简单TCP网络编程实验报告

报告人姓名: 学班学号: 级: 期: 实验 成绩 实验项目名称 基于 WinSock 的简单 TCP 网络编程 一、实验目的与要求: 1、学习和掌握 Socket 编程的面向连接编程模...

贡献者:冰女烦恼

基于TCP协议网上聊天程序

基于TCP协议网上聊天程序

基于TCP协议网上聊天程序_互联网_IT/计算机_专业资料。 深入理解计算机网络基本原理,将书本上抽象的概念与具体的实现技术相结合,体会网络协议的设计与实现过程,以及...

贡献者:tl250818434

SOAP云计算

云计算的认识和理解

云计算的认识和理解

云计算的认识和理解 电子商务 1491 201441071007 陈婷娟 一、云计算的基本概念和原理 云计算《cloud computing,分布式计算技术的一种,其最基本的概念,是透过网络将庞...

贡献者:气死姐咯

云计算的分类

云计算的分类

云计算的分类_互联网_IT/计算机_专业资料。云计算的分类 1、按运营模式分类 云计算作为发展中的概念, 尚未有全球统一的标准分类。 根据目前业界基本达成的共识, ...

贡献者:soyoung5k

云计算发展现状及应用前景

云计算发展现状及应用前景

1 云计算的概述 1.1、云计算定义 云计算《Cloud Computing》概念的直接起源是亚马逊 EC2《Elastic Compute Cloud 的 缩写》产品和 Google-分布式计算项目,云计算是...

贡献者:yyt199411

云计算_图文

云计算_图文

云计算_互联网_IT/计算机_专业资料。云计算 云计算云计算的三种服务模式:IaaS,PaaS 和 SaaS 云服务”现在已经快成了一个家喻户晓的词了。 如果你不知道 PaaS,...

贡献者:小小白菜gost

云计算

云计算

云计算_互联网_IT/计算机_专业资料。云计算简介云计算论文 学院:测绘科学与技术学院 班级:测绘工程 1204 班 姓名:廉晓琪 1210020413 日期: 2014 年 12 月 3 日...

贡献者:lqi0306

迎接云计算时代上93

迎接云计算时代上93

云计算是从效用计算演化来的。 正确 错误 2. 云计算的资源类型是异构资源。 正确 错误 3. 美国国家技术与标准研究院对于云计算的定义是“云计算是一种计算模式...

贡献者:千载传承

对于云计算的认识和理解

对于云计算的认识和理解

对于云计算的认识和理解云计算,分布式计算技术的一种,其最基本的概念,是透过网络将庞 大的计算处理程序自动分拆成无数个较小的子程序, 再交由多部服务 器所...

贡献者:忘记w过客

我对云计算的认识

我对云计算的认识

云计算宣告了低成本提供超 级计算服务的可能,是黑客和不法分子投入极少的成本,就能获得极大的 网络计算能力,一旦这些“云”被用来破解各类密码、进行各种攻击,将 ...

贡献者:Die夏洛克

云计算与云服务

云计算与云服务

云计算与云服务_互联网_IT/计算机_专业资料。云计算与云服务一、云计算的概念云计算的概念最初提出是在 2001 年,从云计算的概念提出至今,业界一直没有一个公 ...

贡献者:li_yueguang

云计算产业链

云计算产业链

云计算产业链发布时间: 2010-06-21 10:12 来源: 赛迪顾问 作者: 计算机产业,软件与信息服务业研究中心 根据赛迪顾问研究,在目前的云计算产业链中,共有六类角色...

贡献者:遇浩