第五学期实习报告Word文档格式.docx

上传人:b****7 文档编号:22397245 上传时间:2023-02-03 格式:DOCX 页数:20 大小:174.74KB
下载 相关 举报
第五学期实习报告Word文档格式.docx_第1页
第1页 / 共20页
第五学期实习报告Word文档格式.docx_第2页
第2页 / 共20页
第五学期实习报告Word文档格式.docx_第3页
第3页 / 共20页
第五学期实习报告Word文档格式.docx_第4页
第4页 / 共20页
第五学期实习报告Word文档格式.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

第五学期实习报告Word文档格式.docx

《第五学期实习报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《第五学期实习报告Word文档格式.docx(20页珍藏版)》请在冰豆网上搜索。

第五学期实习报告Word文档格式.docx

游戏后台运行一个服务器软件,游戏者通过客户端登录后,服务器随机产生一个1-100之间的随机数供游戏者猜,游戏者从客户端输入一个数值,如果该数比设定的数大,软件提示:

“大了”,如果该数比设定的数小,软件提示:

“小了”,若相等,返回“猜对了,您共猜了*次”。

服务器同时记录并维护一个游戏玩家的TOP10排行榜,供玩家查询。

(3).编程语言及工具:

自选(如VB、JAVA、C#、Delphi、VC)

(4).服务端:

接受客户端的命令请求并提供相应的服务。

(5).客户端:

完成游戏人机界面的设计,以命令的方式向服务器请求,并显示相应的提示。

主要的命令有:

1.CONNECTIP地址端口号

指定游戏服务器的IP地址和端口号,连接到服务器。

响应:

连接成功/失败。

2.LOGIN用户名

用户登录,报告服务器玩家的名字。

成功/失败。

3.GUESS数字

猜数。

大了/小了/对了。

4.LISTTOP10

请求显示TOP10排行榜。

显示TOP10排行榜。

5.EXIT

退出游戏。

二.课程设计原理:

在WIN32平台上的WINSOCK编程都要经过下列步骤:

定义变量->

获得WINDOCK版本->

加载WINSOCK库->

初始化->

创建套接字->

设置套接字选项->

关闭套接字->

卸载WINSOCK库->

释放资源

以下是WINSOCKC/S的建立过程:

服务端

客户端

1.初始化WSA

2.建立SOCKET

3.绑定SOCKET

3.连接服务器

4.在指定的端口监听

4.发送和接收数据

5.接受一个连接

5.断开连接

6.发送和接收数据

7.断开连接

三.程序源代码

服务器:

#include<

stdio.h>

winsock2.h>

time.h>

#pragmacomment(lib,"

ws2_32.lib"

#defineSERVER_PORT5208

intanswer=0;

structSample{

charname[11];

ints;

}score[200];

voidrandanswer()

{

srand((unsigned)time(NULL));

answer=(rand()%99)+1;

}

voidsorta()

inta,j;

for(a=19;

a>

0;

a--)

{

for(j=0;

j<

20;

j++)

if(score[j].s>

score[j+1].s)

inttmpa;

chartmpb[11];

tmpa=score[j].s;

strcpy(tmpb,score[j].name);

score[j].s=score[j+1].s;

strcpy(score[j].name,score[j+1].name);

score[j+1].s=tmpa;

strcpy(score[j+1].name,tmpb);

}

}

}

intmain()

{

for(intt=0;

t<

200;

t++)score[t].s=0;

WORDsockVersion=MAKEWORD(2,2);

WSADATAwsaData;

if(WSAStartup(sockVersion,&

wsaData)!

=0)

{

return0;

SOCKETslisten=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

if(slisten==INVALID_SOCKET)

printf("

<

套接失败!

>

\n"

);

sockaddr_insin;

sin.sin_family=AF_INET;

sin.sin_port=htons(5208);

sin.sin_addr.S_un.S_addr=INADDR_ANY;

if(bind(slisten,(LPSOCKADDR)&

sin,sizeof(sin))==SOCKET_ERROR)

绑定失败!

if(listen(slisten,5)==SOCKET_ERROR)

监听失败!

"

SOCKETsClient;

sockaddr_inremoteAddr;

intnAddrlen=sizeof(remoteAddr);

charrevData[255];

intplayer=0;

while(true)

sClient=accept(slisten,(SOCKADDR*)&

remoteAddr,&

nAddrlen);

boolc=true;

while(c=true)

if(sClient==INVALID_SOCKET)

接受失败!

continue;

客户端连接:

%s>

\r\n"

inet_ntoa(remoteAddr.sin_addr));

intret=recv(sClient,revData,50,0);

if(ret>

0)

revData[ret]=0x00;

puts(revData);

if(revData[1]=='

R'

strcpy(score[player].name,revData+3);

memset(revData,'

\0'

255*sizeof(char));

charsendData[50];

randanswer();

sprintf(sendData,"

%d"

answer);

puts(sendData);

send(sClient,sendData,strlen(sendData),0);

ret=recv(sClient,revData,255,0);

if

(ret>

0)revData[ret]=0x00;

if(revData[0]=='

*'

score[player].s=atoi(revData+1);

!

'

c=false;

T'

sorta();

charrank[800]="

;

intd;

for(d=0;

d<

10;

d++)

chartemp[30]="

sprintf(temp,"

%d,Player:

%s,Times:

%d\n"

d+1,score[d].name,score[d].s);

strcat(rank,temp);

send(sClient,rank,strlen(rank),0);

游戏玩家:

%s,游戏次数:

score[player].name,score[player].s);

player++;

closesocket(sClient);

closesocket(slisten);

WSACleanup();

客户端:

stdlib.h>

windows.h>

intanswer;

intguessing(chartype[])

intp=0,p_i;

charguess[4];

boola=false;

//设置一个布尔型(BOOL)变量m的值为false.注释:

布尔型变量只能是false或者true.

while(a!

=true)

p_i=0;

if(p>

=1)gets(type);

while(type[p_i+6]!

='

guess[p_i]=type[p_i+6];

p_i++;

guess[p_i]='

p++;

if(atoi(guess)==answer)

a=true;

if(atoi(guess)<

answer)printf("

您猜测的数据%d比随机产生的数字小!

atoi(guess));

if(atoi(guess)>

您猜测的数据%d比随机产生的数字大!

恭喜您猜数正确!

您共尝试了%d次!

p);

returnp;

A:

boolb=false;

charlogin[30];

charip[16];

charport[5];

请您输入正确的IP地址以及PORT以连接到服务器!

\n<

输入格式:

CONNECT[IPADRESS][PORT]>

while(b==false)

gets(login);

if(login[0]!

M'

)printf("

if(login[7]=='

'

intp,p_i=0;

while(login[p_i+8]!

ip[p_i]=login[p_i+8];

ip[p_i]='

b=true;

WSADATAdata;

data)!

=0)

SOCKETsclient=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

if(sclient==INVALID_SOCKET)

invalidsocket!

sockaddr_inserAddr;

serAddr.sin_family=AF_INET;

serAddr.sin_port=htons(5208);

serAddr.sin_addr.S_un.S_addr=inet_addr(ip);

if(connect(sclient,(sockaddr*)&

serAddr,sizeof(serAddr))==SOCKET_ERROR)

连接失败!

closesocket(sclient);

return9;

连接成功!

请设置您的用户名(3~9个英文字母)>

LOGIN[username]>

charusername[20];

chartype[20];

b=false;

gets(type);

if(type[5]=='

intn,n_i=0;

while(type[n_i+6]!

username[n_i]=type[n_i+6];

n_i++;

username[n_i]='

elseprintf("

设置用户名成功!

charsendData[20]="

#R_"

strcat(sendData,username);

charrecData[255];

G:

send(sclient,sendData,strlen(sendData),0);

Sleep(500);

intret=recv(sclient,recData,255,0);

recData[ret]=0x00;

answer=atoi(recData);

memset(recData,'

Z:

%s您好,欢迎进入猜数游戏!

GUESS[NUMBER(1~100)]>

LISTTOP10>

EXIT>

username);

if(type[0]=='

G'

intgtime=guessing(type);

charscore[8]="

*"

sprintf(score+1,"

gtime);

intstat=send(sclient,score,strlen(score),0);

Sleep(2000);

gotoG;

L'

charsendpata[20]="

#Top"

sendpata[4]='

charrRank[800];

intgo=send(sclient,sendpata,strlen(sendpata),0);

intret=recv(sclient,rRank,800,0);

====猜数游戏前十名排行榜====\n"

puts(rRank);

E'

send(sclient,"

1,0);

}elsegotoZ;

三.程序运行结果

4.心得收获

指导教师评语:

实验成绩:

指导(辅导)教师:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1