当前位置:文档之家› 管理系统中计算机应用实践报告

管理系统中计算机应用实践报告

中南林业科技大学《管理系统中计算机应用》实践报告姓名:XXX专业:人力资源管理院(系):中南林业科技大学成教学院实习时间: 2013年4月18日实习地点: XXXXXXXXXX撰写及批改注意事项一、填写信息1、学生填写信息齐全、字迹清晰、日期真实;2、教师批改后的签名和日期应完整;3、报告中封面、图、程序要求打印(封面与此页要求正反双面打印,教师评语要求手写)。

二、实习报告的撰写1、实习报告撰写认真细致,数据计算正确、误差分析准确、实验结论分析符合科学规律。

2、实习报告有绘制的图形、图表时,要求(1)用电脑绘制;(2)应在报告中注明图号、表号。

三、批改实验报告1、一律采用百分制;2、批改时应对错分明,错误之处应有文字说明或指出错误的标记;3、指导教师评语的容:(1)对本次认识实习完成情况的评语;(2)对本次认识实习报告的评语;目录1.软件编译理论及实践教程实习容 (4)2.套接字编程 (6)2.1使用说明书 (6)2.2原理说明书 (7)2.3程序注释 (7)3.连接数据库 (19)3.1使用说明书 (19)3.2原理说明书 (20)3.3程序注释 (20)4.实习总结、体会与收获 (26)(正文部分)1.软件编译理论及实践教程实习容一:我的电脑磁盘分析:F盘(102.4GB)0025422D6C1剩余扇区二.PING.EXE十六进制源码分析在文件存储空间中,ping.exe十六进制源码分析如下:2. 套接字编程2.1.使用说明书:第一步:先打开服务器端(server.exe).根据提示输入端口号,需要输入大于5001小于65535的值,否则就是用默认的5001作为端口值第二步:创建套接字并选择协议。

第三步:打开客户端(client.exe),根据提示,将客户端(server.exe)所在的服务器的IP地址输入进去。

第四步:输入在服务器端(server.exe)中建立的端口号值。

第五步:选择和服务器端(server.exe)中一样的协议第六步:收发数据第七步:关闭连接。

2.2原理说明书2.3程序注释/******************************************************\ * client.c - 简单的 TCP/UDP 套接字客户程序 windows环境 * \******************************************************/ #include <winsock2.h>//关于套接字的头文件#include <stdlib.h>#include <stdio.h>#include <string.h>#include <conio.h>#pragma comment (lib,"ws2_32")//添加‘ws2_32’库int main(void){unsigned short port = 5001; //端口号int socket_type = SOCK_STREAM; //缺省使用TCP连接char Buffer[1280]; //收发缓冲区unsigned int addr; //IP地址变量int retval,i; //临时变量struct sockaddr_in server, from; //套接字地址结构变量struct hostent *hp; //主机信息结构变量指针WSADATA wsaData; //windows套接字信息SOCKET conn_socket; //套接字变量//先输入客户程序所需要的基本信息:服务器地址,端口号,套接字类型printf("请输入服务器地址:");scanf("%s", Buffer);printf("请输入端口号( >5000 ):");scanf("%d", &i);if(i < 5000 || i > 65535)printf("不正确的端口号%d,用缺省端口号5001\n", i);elseport = i;printf("请输入套接字类型( 1,TCP; 2, UDP ):");scanf("%d",&i);if(i == 1)socket_type = SOCK_STREAM;//设定为SOCK_STREAM else if(i == 2)socket_type = SOCK_DGRAM;//设定为SOCK_DGRAM elseprintf("不正确的输入%d,使用TCP数据流\n", i);//在windows环境下,需要先初始化协议栈if ((retval = WSAStartup(0x202, &wsaData)) != 0) //WSAStartup函数调用,用来初始//socket{printf("WSAStartup 失败,错误号:%d\n",retval);WSACleanup();//当调用了WSAStartup之后,就需要调用WSACleanup函数释放存return -1;}//取得主机IP地址if (isalpha(Buffer[0])) //是域名或命名地址,用首字母的是否在A-Z,或者a-z来判断是域名还是IP地址hp = gethostbyname(Buffer);//从一个主机数据库中提取出主机信息else{addr = inet_addr(Buffer);//是点分地址hp = gethostbyaddr((char *)&addr,4,AF_INET);//根据网络地址,获得主机信息,执行成功,就返回一个指向主机信息的结构}if (hp == NULL ){printf("不能解析地址[%s]: 错误号%d\n", Buffer, WSAGetLastError());//用于获取错误信息WSACleanup();exit(1);}// 拷贝解析的信息到sockaddr_in结构中memset(&server,0,sizeof(server));//分配存空间,由server返回memcpy(&(server.sin_addr),hp->h_addr,hp->h_length);//信息的copyserver.sin_family = hp->h_addrtype;//组协议初始化server.sin_port = htons(port);//端口号初始化//建立套接字conn_socket = socket(AF_INET,socket_type,0);if (conn_socket <0 ){printf("socket()失败,错误号:%d\n", WSAGetLastError());WSACleanup();return -1;}//对于流式套接字,需要先建立连接//其实也可以使用connect(),send(),recv()等函数在windows里面一样实现数据报套接字功能if(socket_type != SOCK_DGRAM){printf("正在连接到: %s\n",hp->h_name);if (connect(conn_socket,(struct sockaddr*)&server,sizeof(server)) == SOCKET_ERROR){printf("connect()失败,错误号:%d\n",WSAGetLastError());closesocket(conn_socket);//如果创建失败,就关闭连接套接字WSACleanup();return -1;}}while(1){//得到要发送的信息字符串puts("\n输入送到服务器的信息:");gets(Buffer);if(!strlen(Buffer)) //如果没有输入信息,继续循环continue;//发送网络信息if(socket_type != SOCK_DGRAM)retval = send(conn_socket, Buffer, strlen(Buffer)+1, 0); //面向tcp,类似BSD write()elseretval = sendto(conn_socket, Buffer, strlen(Buffer)+1, 0, //发送字符串的时候,须将字符串的结束符\0发送(struct sockaddr*)&server, sizeof(server)); //面向UDPif (retval == SOCKET_ERROR)printf("发送失败,错误号:%d\n", WSAGetLastError());break;}elseprintf("发送信息:%s\n", Buffer);//接收网络信息i = sizeof(from);if(socket_type != SOCK_DGRAM)retval = recv(conn_socket, Buffer, sizeof(Buffer), 0 );//面向tcp,类似BSD read()elseretval = recvfrom(conn_socket, Buffer, sizeof(Buffer), 0,(struct sockaddr*)&from, &i);//面向UDPif (retval == SOCKET_ERROR)printf("接收信息失败,错误号:%d\n",WSAGetLastError());break;}else if (retval == 0) // 对于面向连接的套接字,需要判断对方是否关闭连接{printf("服务器关闭连接\n");break;}else //正确接收到网络信息printf("收到 %d 字节信息:%s \n", retval, Buffer);//程序的一个退出条件if(!stricmp(Buffer, "quit"))break;}//关闭套接字closesocket(conn_socket);WSACleanup();return 0;}/*******************************************************\ * server.c - 简单 TCP/UDP 套接字服务器程序 windows环境 * \*******************************************************/ #include <winsock2.h>//套接字头文件#include <stdlib.h>#include <stdio.h>#include <string.h>#include <iostream.h>#pragma comment(lib,"ws2_32")//添加库int main(void){unsigned short port= 5001; //端口号int socket_type = SOCK_DGRAM; //缺省使用TCP连接char Buffer[1024]; //收发缓冲区int retval, fromlen, i, isconnected = 0; //临时变量struct sockaddr_in local, from; //套接字地址结构变量SOCKET listen_socket, msgsock; //套接字变量WSADATA wsaData; //windows套接字信息//先输入服务器程序所需要的基本信息:端口号,套接字类型printf("请输入端口号( >5000 ):");scanf("%d", &i);if(i < 5000 || i > 65535)printf("不正确的端口号%d,用缺省端口号5001\n",i);elseport = i;printf("请输入套接字类型( 1,TCP; 2, UDP ):");scanf("%d", &i);if(i == 1)socket_type = SOCK_STREAM;else if(i == 2)socket_type = SOCK_DGRAM;elseprintf("不正确的输入%d,使用TCP数据流\n",i);//在windows环境下,需要先初始化协议栈if ((retval = WSAStartup(0x202, &wsaData)) != 0) //初始化套接字版本等信息{printf("WSAStartup 失败,错误号:%d\n", retval); WSACleanup();//在创建失败,或者程序结束,都要调用 return -1;}//建立套接字listen_socket = socket(AF_INET, socket_type, 0);if (listen_socket == INVALID_SOCKET){printf("socket()失败,错误号:%d\n", WSAGetLastError());WSACleanup();return -1;}// 拷贝解析的信息到sockaddr_in结构中local.sin_family = AF_INET;local.sin_addr.s_addr = INADDR_ANY;local.sin_port = htons(port);//邦定网络地址到套接字if (bind(listen_socket,(struct sockaddr*)&local, sizeof(local) ) == SOCKET_ERROR) //绑定网络地址{printf("bind()失败,错误号:%d\n",WSAGetLastError());WSACleanup();return -1;}//对于流式套接字,让套接字处于监听状态,等待连接到来if (socket_type != SOCK_DGRAM){if (listen(listen_socket,5) == SOCKET_ERROR) //监听网络{printf("listen()失败,错误号:%d\n", WSAGetLastError());WSACleanup();return -1;}}printf("监听端口:%d, 使用协议:%s\n", port,(socket_type == SOCK_STREAM)? "TCP": "UDP");while(1){fromlen =sizeof(from);if (socket_type == SOCK_DGRAM )msgsock = listen_socket;else if( isconnected == 0){//对于TCP连接,如果没有连接,等待一个连接的到来 msgsock = accept(listen_socket,(struct sockaddr*)&from, &fromlen);if (msgsock == INVALID_SOCKET){printf("accept()失败,错误号:%d\n",WSAGetLastError());WSACleanup();return -1;}isconnected = 1;printf("从%s收到连接, 端口是:%d\n", inet_ntoa(from.sin_addr), htons(from.sin_port));}//等待接收网络信息if (socket_type != SOCK_DGRAM)retval = recv(msgsock, Buffer, sizeof (Buffer), 0 ); //面向tcp,类似BSD read()else{retval = recvfrom(msgsock, Buffer, sizeof (Buffer), 0,(struct sockaddr *)&from, &fromlen);//面向UDPprintf("从%s收到数据报,端口是:%d\n", inet_ntoa(from.sin_addr), htons(from.sin_port));}//结果判断if (retval == SOCKET_ERROR){printf("recv()失败,错误号:%d\n", WSAGetLastError());closesocket(msgsock);continue;}else if (retval == 0){printf("客户端关闭连接\n");closesocket(msgsock);continue;}else //正常接收{printf("收到 %d 字节的数据:%s \n", retval, Buffer);if (socket_type != SOCK_DGRAM){//对于TCP连接,我们收到"exit"有一个关闭连接的操作if(!stricmp(Buffer, "exit")){printf("关闭TCP 连接,等待下一次连接...\n");closesocket(msgsock);isconnected = 0;continue;}}}//信息回送printf("将同样的信息回送给客户端...\n\n");printf("please input the message:\n");scanf("%s",Buffer);if (socket_type != SOCK_DGRAM)retval = send(msgsock, Buffer, strlen(Buffer)+1, 0); //面向tcp,类似BSD write()elseretval = sendto(msgsock, Buffer, strlen(Buffer)+1, 0,(struct sockaddr *)&from, fromlen); //面向UDPif (retval == SOCKET_ERROR){printf("send()失败,错误号:%d\n", WSAGetLastError());}//程序的一个退出条件if(!stricmp(Buffer, "quit"))break;}WSACleanup();return 0;}3.连接数据库3.1使用说明书第一步:在开始菜单中找到SQL SERVER并打开第二步:建立一个新的数据库。

相关主题