Linux课程设计Word文档格式.docx

上传人:b****1 文档编号:15339827 上传时间:2022-10-29 格式:DOCX 页数:13 大小:107.58KB
下载 相关 举报
Linux课程设计Word文档格式.docx_第1页
第1页 / 共13页
Linux课程设计Word文档格式.docx_第2页
第2页 / 共13页
Linux课程设计Word文档格式.docx_第3页
第3页 / 共13页
Linux课程设计Word文档格式.docx_第4页
第4页 / 共13页
Linux课程设计Word文档格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

Linux课程设计Word文档格式.docx

《Linux课程设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《Linux课程设计Word文档格式.docx(13页珍藏版)》请在冰豆网上搜索。

Linux课程设计Word文档格式.docx

本课程设计实验主要围绕Linux平台上主流的基础技术展开,这些技术包括:

Linux的进程、线程通信和同步技术;

socket网络通信技术等,这些技术可以集中体现并应用在并发程序设计中。

通过并发程序的设计与开发,培养学生底层软件开发的能力,并为将来从事UNIX/Linux平台开发、嵌入式开发等相对高端的软件开发工作打下基础。

2、实验项目的功能及模块划分

本实验是一个Linux下的并发程序。

基本功能有通过Socket,一个进程接收并传送用户操作命令以及相关操作数据等;

另一进程收到该命令后,先分析该命令,然后真真完成该命令的具体操作。

在此基础上,还具有接收用户输入方式为图形化界面;

容许一次传送多个命令(主要是传送的数据格式支持多个命令)等功能。

3、设计与实现

3.1系统结构

3.1.1系统结构图

3.2发送进程

3.2.1基本功能

主菜单、通过socket传送命令和操作数据给另一个进程,命令包括:

添加学生信息、删除学生信息、修改学生信息、显示学生信息。

一次允许传送多个命令。

3.3接收进程的实现

3.3.1基本功能

进程收到该命令后,先分析该命令,然后完成该命令的具体操作。

4数据库访问或文件操作

4.1文件操作

学生基本信息存储在文件stu.info中,该文件相关的结构可以按照以下方式定义:

structstu_info{

charstu_num[12];

charname[10];

charzhuanye[10];

shortintsex;

charmobile_phone[12];

};

对文件的操作主要是通过系统调用来实现的,其中包括打开和创建文件(open、creat)、读写文件(write、read)和文件定位(lseek)。

对文件的删除使用的系统调用system调用/bin/sh执行rm命令实现,即system(“rm-fstu.info”);

5通信模块的实现

5.1通信方式的选择

进程通信方式选择的socket,因为进行通信的进程不可能局限于单机,更多的时候是网络中不同主机进程间的通信,通信的数据结构也可以根据需要自行进行定义。

进程通信多数情况下是多进程,在服务器通过实现并发服务器能够很好的让服务器和多个客户端进程间进行通信。

6、测试与调试

(1)客户端与服务器建立连接

客户端的主菜单:

服务器(打印连接信息)

(2)添加学生信息

客户端:

服务器:

(3)修改学生信息

(4)删除学生信息

(5)显示学生信息

(6)并发处理多客户

一个添加信息,一个查看信息

7、总结

附录:

程序代码

源代码由三个文件组成:

net.h、server.c和client.c

//net.h

#include<

stdio.h>

string.h>

stdlib.h>

sys/socket.h>

arpa/inet.h>

netinet/in.h>

errno.h>

unistd.h>

fcntl.h>

#definePORT3000

charstu_num[12];

charname[10];

charzhuanye[10];

shortintsex;

charmobile_phone[12];

structmsg_buffer{

charcmd;

charcmd_param[12];

structstu_infostu;

//*******************************************************************

//client.c

#include"

net.h"

structmsg_buffermsg[20];

staticintmsg_count=0;

charmenu()

{

system("

clear"

);

printf("

-------------------------------------\n"

*(a)AddStudentInformation\n*\n"

*(m)ModifyStudentInformation\n*\n"

*(d)DeleteStudentInformation\n*\n"

*(s)ShowStudentInformation\n*\n"

*(e)TheEndOfCommandInput\n*\n"

Input/a/m/d/s/e:

"

scanf("

%c"

&

msg[msg_count].cmd);

returnmsg[msg_count].cmd;

}

voidaddStuInfo()

\n\nInputtheinformationyouwanttoadd\n"

Num:

%s"

msg[msg_count].stu.stu_num);

Name:

msg[msg_count].stu.name);

Sex(1/0):

%d"

msg[msg_count].stu.sex);

zhuanye:

msg[msg_count].stu.zhuanye);

MobilePhone:

msg[msg_count].stu.mobile_phone);

voidmodifyStuInfo()

\n\nInputthestudentnumofmodify\n"

msg[msg_count].cmd_param);

Inputtheinformationyouwanttomodify\n"

voiddeleteStuInfo()

\n\nInputthestudentnumofdelete\n"

voidshowStuInfo()

\n\nShowCommandisinput,pressEnter.....\n"

getchar();

intendOfInput()

\nCommandInputisfinish.....PressEnter\n"

return1;

intmain(intargc,char*argv[])

intflag,sockfd;

structsockaddr_inclient_addr;

sockfd=socket(AF_INET,SOCK_STREAM,0);

bzero(&

client_addr,sizeof(client_addr));

client_addr.sin_family=AF_INET;

client_addr.sin_port=htons(PORT);

inet_aton(argv[1],&

client_addr.sin_addr);

bind(sockfd,(structsockaddr*)&

if(connect(sockfd,(structsockaddr*)&

client_addr,sizeof(structsockaddr))==-1){

fprintf(stderr,"

connecterror%s\n"

strerror(errno));

exit(0);

}

while

(1){

switch(menu()){

case'

a'

:

addStuInfo();

break;

m'

modifyStuInfo();

d'

deleteStuInfo();

s'

showStuInfo();

e'

flag=endOfInput();

default:

Inputthechoice\n"

msg_count++;

if(flag==1){

if(write(sockfd,&

msg_count,sizeof(int))==-1)

writeerror%s\n"

if(write(sockfd,msg,sizeof(structmsg_buffer)*msg_count)==-1)

strerro

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

当前位置:首页 > 求职职场 > 面试

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

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