北京科技大学软件课程设计作业.docx

上传人:b****6 文档编号:13614515 上传时间:2023-06-15 格式:DOCX 页数:12 大小:342.10KB
下载 相关 举报
北京科技大学软件课程设计作业.docx_第1页
第1页 / 共12页
北京科技大学软件课程设计作业.docx_第2页
第2页 / 共12页
北京科技大学软件课程设计作业.docx_第3页
第3页 / 共12页
北京科技大学软件课程设计作业.docx_第4页
第4页 / 共12页
北京科技大学软件课程设计作业.docx_第5页
第5页 / 共12页
北京科技大学软件课程设计作业.docx_第6页
第6页 / 共12页
北京科技大学软件课程设计作业.docx_第7页
第7页 / 共12页
北京科技大学软件课程设计作业.docx_第8页
第8页 / 共12页
北京科技大学软件课程设计作业.docx_第9页
第9页 / 共12页
北京科技大学软件课程设计作业.docx_第10页
第10页 / 共12页
北京科技大学软件课程设计作业.docx_第11页
第11页 / 共12页
北京科技大学软件课程设计作业.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

北京科技大学软件课程设计作业.docx

《北京科技大学软件课程设计作业.docx》由会员分享,可在线阅读,更多相关《北京科技大学软件课程设计作业.docx(12页珍藏版)》请在冰点文库上搜索。

北京科技大学软件课程设计作业.docx

北京科技大学软件课程设计作业

 

北京科技大学

软件课程设计报告

——C语言

 

班级:

自1103

姓名:

高云峰

学号:

41151092

指导教师:

曾慧

日期:

2012年9月8日

目录

1设计内容[1级标题]1

2应用程序总体分析与设计[1级标题]1

3应用程序各功能模块分析与设计[1级标题]1

3.1功能模块[2级标题]1

3.1.1[3级标题]1

3.2模块流程图[2级标题]1

3.2.1[3级标题]1

3.3程序结构图[2级标题]1

3.3.1[3级标题]1

4程序测试1

4.1测试过程[2级标题]1

4.1.1VS2010截图[3级标题]1

4.2测试结果[2级标题]1

4.2.1服务器端截图[3级标题]1

4.2.2客户器端截图[3级标题]1

5程序文档1

5.1使用说明[2级标题]1

5.2程序说明[2级标题]1

6程序源代码1

1设计内容[1级标题]

通过C语言编程实现一个局域网聊天程序,包括服务器端程序和客户端程序,程序能够实现两台主机间或多台主机间的基本通信。

2应用程序总体分析与设计[1级标题]

C程序的编写和调试在VisualStudio2010集成开发环境中完成,通信协议选择TCP,并利用WinSockAPI函数完成网络通信。

应用程序总体设计是根据功能,采用自顶而下的方法,进行模块划分并确定各模块功能。

运用数据流程图等描述工具进行模块程序设计。

编程完成后,对各模块进行上机调试,完成整个系统的开发。

3应用程序各功能模块分析与设计[1级标题]

3.1功能模块[2级标题]

3.1.1[3级标题]

功能模块分两部分——服务器端和客户端。

服务器端:

(1)初始化模块用于初始化各个全局变量赋初始值。

初始化Winsock,加载Winsock库。

(2)功能模块控制。

该模块为其他模块提供调用的函数,包括参数获取功能和错误输出功能。

(3)服务模块。

该模块为客户端提供服务功能,包括接收来自客户端的数据,并发送数据到客户端。

客户端:

(1)初始化模块。

该模块用于初始化客户端的Winsock,加载Winsock库。

(2)功能模块控制。

与服务器端一样,该模块提供了参数获取和错误输出功能。

(3)数据传输控制模块。

该模块控制着整个客户端的数据传输,包括数据发送和接收等。

 

3.2模块流程图[2级标题]

3.2.1[3级标题]服务器端。

服务器端系统流程图所示。

程序首先调用为库文件wsock32.lib使用所需资源。

程序首先调用函数获取用户提供的先项,如果没有提供选项,则直接使用默认值,如果有选项提供并成功获取(选项错误则显示用户帮助并终止程序),则初始化变量和Winsock,并创建TCP流套接字;接下来将创建的TCP流套接字和设定的服务器地址绑定(调用bind()函数);绑定成功后,则开始用listen()函数侦听客户的连接。

接收客户端请求成功后,进行接收数据、发送数据等操作。

接收数据完毕后,关闭窗口完成通信。

 

3.2.2客户端。

客户端系统流程如图所示。

客户端程序执行时调用库函数获取用户选项,如果获取的选项错误,则终止程序,如果选项正确则开始创建TCP流套接字,成功创建TCP流套接字后则作和服务器类似的操作,即解析主机名或IP地址、设置服务器端地址;然后进行连接服务器操作,若能成功连接则输出连接信息,并发送消息到服务器端;然后接收来自服务器端的响应,(消息),并将接收到的消息输出。

最后关闭套接字和释放占用的资源。

和服务器一样,在操作过程中,任何一步操作失败都将退出程序,并提示错误信息。

 

3.3程序结构图[2级标题]

同3.2

4程序测试

4.1测试过程[2级标题]

4.1.1VS2010截图[3级标题]

4.2测试结果[2级标题]

4.2.1服务器端截图[3级标题]

4.2.2客户器端截图[3级标题]

5程序文档

5.1使用说明[2级标题]

程序能实现两台主机或多台主机间的基本通信。

运行环境Windows7/XP,运行客户端.exe程序,与服务器端连接上后,即可进行相关数据传输。

输入需要发送的文字,按Enter结束,数据即发送到服务器端,服务器端即可收到客户端发送的信息。

服务器端输入需要发送的数据,按Enter键发送,客户端也可收到相应信息。

5.2程序说明[2级标题]

本程序执行条件是已知两台电脑的ip地址,除了不能中文聊天其他方面比较得体。

6程序源代码

服务器:

#include

#include

#include

#pragmacomment(lib,"ws2_32.lib")

voidmain()

{

SOCKETs1;

structsockaddr_intcpaddr;

interr=0;

charip_addr[16]={"0"};

intisockErr;

intport=5000;

structsockaddr_inclientsocket;

intlen;

SOCKETserConn;

charreceiveBuf[100];

charsendBuf[100];

WORDwVersionRequested;

WSADATAwsaData;

wVersionRequested=MAKEWORD(2,2);

err=WSAStartup(wVersionRequested,&wsaData);

if(!

err)

{

printf("已打开套接字\n");

}

else

{

printf("嵌套字未打开!

");

return;

}

s1=socket(AF_INET,SOCK_STREAM,0);

tcpaddr.sin_family=AF_INET;

tcpaddr.sin_port=htons(port);

tcpaddr.sin_addr.s_addr=htonl(INADDR_ANY);

if(bind(s1,(LPSOCKADDR)&tcpaddr,sizeof(tcpaddr))==SOCKET_ERROR)

{

isockErr=WSAGetLastError();

return;

}

else

{printf("绑定完成\n");

}

if(listen(s1,5)==0)

{printf("监听成功\n");

}

else

{printf("SOCKET_ERROR");

}

serConn=socket(AF_INET,SOCK_STREAM,0);

printf("创建了已连接套借口\n");

serConn=accept(s1,(LPSOCKADDR)&clientsocket,&len);//如果这里不是accept而是conection的话。

就会不断的监听

while

(1)

{printf("请输入想要说的话:

\n");

gets(sendBuf);

send(serConn,sendBuf,100,0);

recv(serConn,receiveBuf,100,0);

//send(serConn,"serve:

OK",strlen("serve:

OK")+1,0);

printf("%s\n",receiveBuf);

}

closesocket(serConn);

}

客户端:

#include

#include

#pragmacomment(lib,"ws2_32.lib")

voidmain()

{

interr;

SOCKETclientSocket;

structsockaddr_inclientsock_in;

charip_addr[16]={"127.0.0.1"};

charreceiveBuf[100]={"0"};

charspeak[100];

WORDwVersionRequired;

WSADATAwsaData;

wVersionRequired=MAKEWORD(2,2);

err=WSAStartup(wVersionRequired,&wsaData);

if(!

err)

{

printf("客户端嵌套字已经打开!

\n");

}

else

{

printf("客户端的嵌套字打开失败!

\n");

return;

}

clientSocket=socket(AF_INET,SOCK_STREAM,0);

printf("请输入主机IP:

\n");

scanf("%s",ip_addr);

clientsock_in.sin_family=AF_INET;

clientsock_in.sin_addr.s_addr=inet_addr(ip_addr);

clientsock_in.sin_port=htons(5000);

//bind(clientSocket,(sockaddr*)&clientsock_in,strlen(sockaddr));

//listen(clientSocket,5);

if(connect(clientSocket,(LPSOCKADDR)&clientsock_in,sizeof(clientsock_in)))

{printf("与服务器连接出错");

system("pause");

}

else

{printf("开始连接,请稍候.....\n");

}

recv(clientSocket,receiveBuf,100,0);

printf("%s\n",receiveBuf);

while

(1)

{

printf("请输入想要说的话:

\n");

gets(speak);

send(clientSocket,speak,100,0);

recv(clientSocket,receiveBuf,100,0);

printf("%s\n",receiveBuf);

}

closesocket(clientSocket);

WSACleanup();

}

VS2010完整工程文件,附件单独提交。

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2