《Linux操作系統(tǒng)》課程設(shè)計(jì)報(bào)告購(gòu)物管理系統(tǒng)
《《Linux操作系統(tǒng)》課程設(shè)計(jì)報(bào)告購(gòu)物管理系統(tǒng)》由會(huì)員分享,可在線閱讀,更多相關(guān)《《Linux操作系統(tǒng)》課程設(shè)計(jì)報(bào)告購(gòu)物管理系統(tǒng)(29頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、 河南城建學(xué)院 《Linux操作系統(tǒng)》課程設(shè)計(jì)報(bào)告 題目:購(gòu)物管理系統(tǒng) 姓 名: 齊 超 學(xué) 號(hào): 061408139 班 級(jí): 0614081班 指導(dǎo)老師:邵國(guó)金、楊斌、魏新紅 專(zhuān) 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 2011年 09 月 09 日 前 言 隨著Internet國(guó)際互聯(lián)網(wǎng)的發(fā)展,越來(lái)越多的企業(yè)開(kāi)始建造自己的網(wǎng)站。基于Internet的信息服務(wù),商務(wù)服務(wù)已經(jīng)成為現(xiàn)代企業(yè)一項(xiàng)不可缺少的內(nèi)容。很多企業(yè)都已不滿(mǎn)足于建
2、立一個(gè)簡(jiǎn)單的僅僅能夠發(fā)布信息的靜態(tài)網(wǎng)站?,F(xiàn)代企業(yè)需要的是一個(gè)功能強(qiáng)大的,能提供完善的電子商務(wù)服務(wù)的動(dòng)態(tài)商務(wù)網(wǎng)站。 目 錄 系統(tǒng)目的 隨著時(shí)代的發(fā)展,信息技術(shù)、Internet/Intranet技術(shù)、數(shù)據(jù)庫(kù)技術(shù)的不斷發(fā)展完善,網(wǎng)絡(luò)進(jìn)程的加快,傳統(tǒng)的購(gòu)物方式也越來(lái)越不能滿(mǎn)足人們快節(jié)奏的生活需求,使得企業(yè)的IT部門(mén)已經(jīng)認(rèn)識(shí)到Internet的優(yōu)勢(shì),電子商務(wù)就是在這樣一個(gè)背景下產(chǎn)生發(fā)展起來(lái)的。伴隨著電子商務(wù)技術(shù)的不斷成熟,電子商務(wù)的功能也越來(lái)越強(qiáng)大,注冊(cè)用戶(hù)可以在網(wǎng)上搜索購(gòu)買(mǎi)到自己想要的各種商品,
3、初步讓人們體會(huì)到了足不出戶(hù),便可隨意購(gòu)物的快感。這次的設(shè)計(jì)就正是一個(gè)電子商務(wù)系統(tǒng)的開(kāi)發(fā)---網(wǎng)上購(gòu)物系統(tǒng)。 設(shè)計(jì)說(shuō)明 本系統(tǒng)是一個(gè)中小型的電子商務(wù)系統(tǒng)----網(wǎng)上購(gòu)物系統(tǒng),可以為各類(lèi)用戶(hù)提供方便的在線購(gòu)物環(huán)境,符合目前國(guó)內(nèi)流行的電子商務(wù)模式。用戶(hù)可以在系統(tǒng)中實(shí)現(xiàn)驗(yàn)證、瀏覽商品、搜索查詢(xún)商品、下定單、處理定單等功能; 系統(tǒng)的組成有以下幾個(gè)子系統(tǒng)組成: 1. 主頁(yè),顯示歡迎界面,提供近期的商品。 3. 查詢(xún)系統(tǒng),通過(guò)商品類(lèi)別、名稱(chēng)來(lái)查詢(xún)是否有自己需要的商品。 4. 購(gòu)物車(chē),處理訂購(gòu)并顯示想要訂購(gòu)的商品。 5. 用戶(hù)身份驗(yàn)證系統(tǒng)。 6. 用戶(hù)資金驗(yàn)證系統(tǒng)。 系統(tǒng)結(jié)構(gòu)簡(jiǎn)介 l
4、 用戶(hù)可以瀏覽網(wǎng)站 l 驗(yàn)證用戶(hù)身份 l 提供搜索引擎,使用戶(hù)能夠按特定的條件對(duì)所需商品進(jìn)行搜索 l 用戶(hù)下定單購(gòu)買(mǎi)商品 l 用戶(hù)處理定單 l 用戶(hù)資金驗(yàn)證 l 用戶(hù)查看定單處理步驟 系統(tǒng)運(yùn)行環(huán)境配置 操作系統(tǒng):Windows XP,Microsoft SQL server,linux 操作系統(tǒng)。 CPU:沒(méi)有很高的要求,只要能夠順利運(yùn)行Windows系列操作系統(tǒng)就可以了。 內(nèi)存:最低配置32MB,建議使用64MB以上內(nèi)存,如果使用Windows 2000或Windows XP建議使
5、用128MB以上內(nèi)存。 硬盤(pán)空間:至少需要50MB以上的硬盤(pán)空間來(lái)安裝所需的組件。 系統(tǒng)數(shù)據(jù)庫(kù)介紹 服務(wù)器方數(shù)據(jù)庫(kù)表結(jié)構(gòu): 服務(wù)器商品表:商品號(hào),端口號(hào),單價(jià),數(shù)量。 處理記錄:端口號(hào),流水賬號(hào),成功與否。 消費(fèi)表:消費(fèi)表編號(hào),密碼,金額。 中間件第三方表: 端口表:端口號(hào),地址信息。 消費(fèi)記錄表:端口號(hào),流水賬號(hào),消費(fèi)商品號(hào),購(gòu)買(mǎi)數(shù)量,消費(fèi)編號(hào)。 客戶(hù)端表: 客戶(hù)商品表:商品號(hào),商品名稱(chēng),數(shù)量,單價(jià)。 消費(fèi)表:端口號(hào)
6、,流水賬號(hào),消費(fèi)品號(hào),購(gòu)買(mǎi)數(shù)量,消費(fèi)編號(hào)。 模塊設(shè)計(jì)概述 網(wǎng)上商品系統(tǒng)的主要體系結(jié)構(gòu)包括: 數(shù)據(jù)服務(wù)器 linux 操作系統(tǒng)平臺(tái) 客戶(hù)端 購(gòu)物系統(tǒng)流程圖: 用戶(hù)模塊的程序流圖: 用戶(hù)瀏覽商品 選定商品 放入購(gòu)物車(chē) 是否購(gòu)買(mǎi) 確認(rèn)購(gòu)買(mǎi) 訂單詳情 商品信息 否 否 否 否 是 是 是 用戶(hù) 第三方中間件流程圖: 請(qǐng)求消費(fèi) 判定消費(fèi)卡 購(gòu)買(mǎi)信息 中間件記錄數(shù)據(jù) 傳入服務(wù)器 判斷資金是否足夠 1. 處理大中資金
7、數(shù)據(jù) 2. 處理服務(wù)器商品數(shù)量 3. 發(fā)出發(fā)貨信息 1. 客戶(hù)端商品數(shù)量減少 2. 出貨時(shí)間 是否繼續(xù)交易 退 出 退 出 報(bào) 錯(cuò)! 信息無(wú)法購(gòu)買(mǎi) 報(bào) 錯(cuò)! 報(bào) 錯(cuò)! 用戶(hù) N N N N N Y Y Y Y Y N Y 給中間件傳輸 系統(tǒng)其它功 (1) 用戶(hù)驗(yàn)證 用戶(hù)一旦成為本網(wǎng)站的會(huì)員后,即可在登陸頁(yè)面中登陸,用戶(hù)只要輸入自己的用戶(hù)名和密碼即可實(shí)現(xiàn)登陸。這里有ASP函數(shù)對(duì)用戶(hù)名和密碼進(jìn)行判斷,以此來(lái)保證用戶(hù)的合法性為了能更方便地使用網(wǎng)站的各項(xiàng)功能,用戶(hù)登錄也是必不可少的。當(dāng)用戶(hù)登錄以后,便可進(jìn)行查閱/更改自己的個(gè)人資料、修改/
8、處理個(gè)人定單等操作。
(2) 購(gòu)物車(chē)
當(dāng)用戶(hù)選好自己想要的商品后可把商品放入購(gòu)物車(chē)中,購(gòu)物車(chē)將自動(dòng)產(chǎn)生相應(yīng)的定單。當(dāng)然,用戶(hù)也可以從購(gòu)物車(chē)?yán)飫h除掉選好的商品,而相應(yīng)定單的也會(huì)刪除。
(3) 用戶(hù)資金驗(yàn)證
程序代碼
數(shù)據(jù)庫(kù)程序代碼:
#include
9、 #define rec_length 20 void strsplit(char *,char **,char ); main(int argc, char **argv ) { //1 main struct sockaddr_in sin; struct servent *sp; int s,ns,pid; char d=|,tmp[1000],buff[500],cmd[500]; char *service,*log="svr.log"; // char s[]="1234|567|7|90|abcd|efghijklmnop|";
10、 char *str; char *v[100],*h[500]; int i,j,recs,flds,err_code,c,rd_l,wr_l; char *sat[]={ "OKOKOKOK","E_DBinit","E_DBconn","E_DBqry ","E_DBstor", "E_DBnDAT","E_TCPsvr","E_TCPnam","E_TCPsoc","E_TCPcon", "E_TCPsnd","E_TCPrcv","E_TCPbnd","E_TCPlsn","E_TCPacc" }; //declare structu
11、re and vars. MYSQL mysql; MYSQL_RES *result; MYSQL_ROW row; if(argc!=1) service=argv[1]; else { //2 fprintf(stderr,"NO service assigned!\nUsage:\n"); fprintf(stderr,"\t%s server_name!\n",argv[0]); fprintf(stderr,"Note: svr_name is defined in file /etc/services\n");
12、exit(-1); } //2 // sprintf(buf,"touch %s",log);system(buf);// touch or create log if((rd_l=open(log,O_WRONLY|O_CREAT|O_APPEND,0644))==-1) { fprintf(stderr,"Log file %s open error!\a\n",log); exit(-1); } close(rd_l); for(i=0;i<100;i++) v[i]=NULL; // initialize MYSQL st
13、ructure if(mysql_init(&mysql)==NULL) { //2 fprintf(stderr,"Error in mysql_init!\n"); err_code=1; goto end_1; } //2 //connect to DB if(!mysql_real_connect(&mysql,"localhost","root",0,"lyg",0,NULL,0)) { //2 fprintf(stderr,"Error in connection: %s [%d]\n",\ mysql_error(&mysql),
14、mysql_errno(&mysql)); mysql_close(&mysql); err_code=-2; goto end_1; // goto mysql_err; } //2 if((sp=getservbyname(service,"tcp"))==NULL) { //2 fprintf(stderr,"Error: getservbyname"); err_code=6; goto end_1; } //2 if((s=socket(AF_INET,SOCK_STREAM,0))==-1) { //2
15、 fprintf(stderr,"Error: socket create"); err_code=9;goto end_1; } //2 bzero(&sin,sizeof(sin)); sin.sin_port=sp->s_port; if(bind(s,&sin,sizeof(sin))==-1) { //2 fprintf(stderr,"Error: bind"); err_code=13;goto end_1; // close(s); exit(-6); } //2 if(listen(s,5)==-1
16、) { //2 fprintf(stderr,"Error: listen"); err_code=14;goto end_1; // close(s); exit(-6); } //2 while(1) { //2 while fprintf(stderr,"\n\t\t\t Now wait connect ...\n"); if((ns=accept(s,0,0))==-1) { // wait a connection //3 fprintf(stderr,"error: accept"); contin
17、ue; // err_code=14;goto end_1; }//3 err_code=0; if((pid=fork())==-1) { //conneted, and then create child proc//3 fprintf(stderr,"server: fork error!"); close(s); exit(-1); }//3 if(pid!=0) {//parent proce,nothing to do, and to the next loop//3 close(ns); wait
18、(0); continue; }//3 if(pid==0) { // entered child proccedure //3 pid=0 close(s); printf("Receive a client connect:%s\n",argv[1]); if((rd_l=read(ns,buff,500))==0) { //4 fprintf(stderr,"Read nothing from socket:ns\n"); err_code=12;goto end_1; } //4 printf
19、("%s get message from ns: %s\n",argv[0],buff); buff[rd_l]=\0; strcpy(tmp,buff); strsplit(buff,v,d); switch(v[0][0]) { //4 switch case 2: // query(); sprintf(cmd,"SELECT kid,money FROM K WHERE kid=%s and kpwd =%s",v[1],v[2]); //execute query printf("\nCMD=
20、%s\n",cmd); if(mysql_query(&mysql,cmd)!=0) { //5 fprintf(stderr,"Error in query: %s [%d]\n",\ mysql_error(&mysql),mysql_errno(&mysql)); err_code=3;goto end_1; } //5 //get result if((result=mysql_store_result(&mysql))==NULL) { //5 fprintf(stderr,
21、"Error in store_result: %s [%d]\n",\ mysql_error(&mysql),mysql_errno(&mysql)); mysql_free_result(result); err_code=4;goto end_1; } //5 //mysql_err: //sprintf(buff,"%2.2d|",err_code); if(err_code!=0) goto end_1; recs=mysql_num_rows(result); row=mysql_f
22、etch_row(result); sprintf(buff,"%d|%s",recs,row[1]); double money; printf("-----%s------",buff); //money=row[1]; /* if(recs==1) write(ns,"1",wr_l); else write(ns,"0",wr_l); flds=mysql_num_fields(result); for(i=0
23、;i 24、ns error!\n");
close(ns); exit(-4);
} //5
char rebuf[500],rep[500],repp[500];
if((rd_l=read(ns,rebuf,500))==0)
{ //5
fprintf(stderr,"Read nothing from socket:ns\n");
err_code=12;goto end_1;
} //5
mysql_free_result(result); //ma 25、y cause problem when no result
printf("%s 接收信息: %s\n",argv[0],rebuf);
strsplit(rebuf,h,d);
double share=0;
for(i=1;i<3;i=i+2)
{
// if(compare(h[i],""))
// break;
sprintf(cmd,"SELECT sid,num,price FROM S WHERE sid=%s",h[i]);
26、 printf("\nCMD=%s\n",cmd);
if(mysql_query(&mysql,cmd)!=0)
{ //5
fprintf(stderr,"Error in query: %s [%d]\n",\
mysql_error(&mysql),mysql_errno(&mysql));
err_code=3;goto end_1;
} //5
//get result
if((result=mysql_store_result(&mysql))==NULL)
{ / 27、/5
fprintf(stderr,"Error in store_result: %s [%d]\n",\
mysql_error(&mysql),mysql_errno(&mysql));
mysql_free_result(result);
err_code=4;goto end_1;
} //5
if(err_code!=0) goto end_1;
recs=mysql_num_rows(result);
28、 row=mysql_fetch_row(result);
printf("_______%s________%d___%d___",row[0],swit2(row[1]),swit1(row[2]));
printf("TTTTTTTTTTTTTT%sTTTTTTTTT%sTT",h[i],h[i+1]);
if(swit2(row[1])>=swit2(h[i+1]))//??????????????????????? 29、????????
{
sprintf(repp,"%s|%s|%s|",h[i],"1",h[i+1]);
printf("%s商品數(shù)量足夠!",h[i]);
strcat(rep,repp);
//double ttt=swit2(h[i+1]) * row[2];
// ttt*=row[2];
30、 // share+=ttt;
}
else
{
sprintf(repp,"%s|%s|%s|",h[i],"0",row[1]);
printf("%s商品數(shù)量不足!",h[i]);
strcat(rep,repp);
}
}
/* if(share<=money)
{
sprintf(repp,"%d",share);
printf("%s卡上金額為:%d,所需金額為:%d!金額足夠!",v[1],mon 31、ey,share);
strcat(rep,repp);
double tt=money-share;
sprintf(cmd,"update K set money=%d where kid=%s;",tt,v[1]);
printf("\nCMD=%s\n",cmd);
if(mysql_query(&mysql,cmd)!=0)
{
fprintf(stderr,"Error in query: %s [%d]\n",\
mysql_error(&mysql),mysql_errno( 32、&mysql));
err_code=3;goto end_1;
}
printf("數(shù)據(jù)庫(kù)更新成功!\n");
}
else
{
sprintf(repp,"%d",money);
printf("%s卡上金額為:%d,所需金額為:%d!金額不足!",v[1],money,share);
strcat(rep,repp);
}
*/ printf("++++++++%s",rep);
wr_l=strlen(rep);
if((wr_l=write( 33、ns,rep,wr_l))!=wr_l){
fprintf(stderr,"Write socket ns error!\n");
close(ns); exit(-4);
}
end_1:
mysql_free_result(result); //may cause problem when no result
mysql_close(&mysql); //may cause problem when no &mysql
break;
case 3:
// trans();
nothing( 34、buff);
break;
default:
fprintf(stderr,"Func. code error in:\n%s",buff);
} //4 switch
//寫(xiě)日志
strncat(tmp,buff,wr_l);wr_l+=rd_l;
tmp[wr_l]=\0;
strcat(tmp,"\n");++wr_l;
printf("\nTMP(%d:%d)=%s\n",strlen(tmp),wr_l,tmp);
if((flds=open(log,O_WRONLY|O_APPEND)) 35、==-1){
fprintf(stderr,"File %s open error!\n",log);
exit(-5);
}
if(write(flds,tmp,wr_l)!=wr_l){
fprintf(stderr,"File %s write error!\n",log);
close(flds);exit(-6);
}
close(flds);
close(ns); exit(0);
} //3
} //2 while
} //1 main
void strsplit(char 36、 *s,char **v,char d)
{
int i,j,l;
j=0;v[j]=s;
l=strlen(s);
for(i=0;i 37、t++)
{
int i=s[t]-48;
sum+=i*pow(10,strlen(s)-1-t);
}
sum/=pow(10,strlen(s)-t);
t++;
d=strlen(s)-t;
for(t;t 38、t sum=0;
int t=0;
for(t;t 39、include 40、ent *sp1;
char sbuf[1000],*log="mid.log";
int ss,spid,rd_l,wr_l,rd1l;
char *sservice,*sdest;
// structure defined for request as a server
struct sockaddr_in sin;
struct servent *sp;
int s,ns,pid,err_code,recs,flds;
char buf[500],tmp[1000],cmd[500];
char *service;
int i,j,c;
cha 41、r *sat[]={
"OKOKOKOK","E_DBinit","E_DBconn","E_DBqry ","E_DBstor",
"E_DBnDAT","E_TCPsvr","E_TCPnam","E_TCPsoc","E_TCPcon",
"E_TCPsnd","E_TCPrcv","E_TCPbnd","E_TCPlsn","E_TCPacc"
};
//declare structure and vars for MySQL
MYSQL mysql;
MYSQL_RES *result;
MYSQL_ROW row;
// test 42、 the environment parameter: lservice, dservice, server_name
if(argc==4)
{
service=argv[1];sservice=argv[2]; sdest=argv[3];
}
else
{
fprintf(stderr,"Parameter assigned Error!\nUsage:\n");
fprintf(stderr,"\t%s lservice dservice server_name!\n",argv[0]);
fprintf(stderr,"Note: se 43、rver_name is defined in file /etc/hosts\n");
fprintf(stderr,"and: lservice dservice are defined in file /etc/services\n");
exit(-1);
}
// sprintf(buf,"touch %s",log);system(buf);// touch or create log
if((rd1l=open(log,O_WRONLY|O_CREAT|O_APPEND,0644))==-1)
{
fprintf(stderr,"Log file 44、 %s open error!\a\n",log);
exit(-1);
}
close(rd1l);
err_code=0;
if((sp=getservbyname(service,"tcp"))==NULL)
{
fprintf(stderr,"Error: getservbyname");
err_code=6; exit(err_code);
}
if((s=socket(AF_INET,SOCK_STREAM,0))==-1)
{
fprintf(stderr,"Error: socket create");
err_c 45、ode=8; exit(err_code);
}
bzero(&sin,sizeof(sin));
sin.sin_port=sp->s_port;
if(bind(s,&sin,sizeof(sin))==-1)
{
fprintf(stderr,"Error: bind");
err_code=13;
close(s); exit(err_code);
}
if(listen(s,5)==-1)
{
fprintf(stderr,"Error: listen");
err_code=14;
close(s); exit(e 46、rr_code);
}
// initialize MYSQL structure
if(mysql_init(&mysql)==NULL)
{
strcpy(tmp,"Error in mysql_init!");
fprintf(stderr,"%s\n",tmp);
err_code=1; goto end_1;
}
sql=1;
//connect to DataBase
if(!mysql_real_connect(&mysql,"localhost","root",0,"lyg",0,NULL,0))
{
sprintf( 47、tmp,"數(shù)據(jù)庫(kù)連接錯(cuò)誤: %s [%d]",\
mysql_error(&mysql),mysql_errno(&mysql));
fprintf(stderr,"%s\n",tmp);
err_code=-2; goto end_1;
}
while(1)
{
fprintf(stderr,"\n\t\t\t Now wait connect ...\n");
if((ns=accept(s,0,0))==-1)
{ // wait a connection */
fprintf(stderr,"error: acc 48、ept"); continue;
}
if((pid=fork())==-1)
{ // conneted, and then create child proc
fprintf(stderr,"server: fork error!");
close(s); exit(-1);
}
if(pid!=0)
{ //parent proce, nothing to do, and to the next loop
close(ns);wait(0);continue;
}
if(pid==0)
{ // entered 49、 child proccedure
close(s);
printf("Receive a client connect:%s\n",argv[1]);
sprintf(cmd,"SELECT * FROM S;"); // 構(gòu)造命令
if(mysql_query(&mysql,cmd)!=0)
{ //execute query
fprintf(stderr,"Error in query: %s [%d]\n",\
mysql_error(&mysql),mysql_errno(&mysql));
err_code= 50、3;goto end_1;
}
if((result=mysql_store_result(&mysql))==NULL)
{ //get result
fprintf(stderr,"Error in store_result: %s [%d]\n",\
mysql_error(&mysql),mysql_errno(&mysql));
err_code=4;goto end_1;
}
rslt=1;
sprintf(buf,"%2.2d|",err_code);
if(err_code!=0) goto 51、 end_1;
recs=mysql_num_rows(result); // 獲得行數(shù)
flds=mysql_num_fields(result); // 獲得域數(shù)
fprintf(stderr,"records=%d & fields=%d\n",recs,flds);
for(i=0;i 52、",row[j]);
strcat(buf,cmd);
}
// fprintf(stderr,"%s\n",buf); // 顯示返回信息
}
wr_l=strlen(buf);
if((wr_l=write(ns,buf,wr_l))!=wr_l)
{
strcat(tmp,"Write socket ns error!\n");
fprintf(stderr,"Write socket error!\n");
}
else
{
strncat(tmp,buf,wr_l) 53、;wr_l+=rd_l;
}
// close(s);
char buff[500];
if((rd_l=read(ns,buff,rec_length))==0)
{
fprintf(stderr,"Read nothing from socket:ns\n");
err_code=12; close(ns);
exit(err_code);
}
wr_l=rd_l; buff[rd_l]=\0;
// strcpy(sbuf,buf);
fprintf(stderr,"%s get mes 54、sage from ns: %s\n",argv[0],buff);
//buff[rd_l]=\0;
strcpy(tmp,buff);
strsplit(buff,v,d); // 拆分請(qǐng)求信息
// printf("%c",v[0][0]);
switch(v[0][0])
{ // 分析請(qǐng)求功能,并執(zhí)行相關(guān)工作。這里只實(shí)現(xiàn)了查詢(xún)功能. 其它功能由自己模仿查詢(xún)功能來(lái)實(shí)現(xiàn)
case 1: // query();
sprintf(cmd,"SELECT * FROM S WHERE sname like %%%s%;",v[ 55、1]); // 構(gòu)造命令
if(mysql_query(&mysql,cmd)!=0)
{ //execute query
fprintf(stderr,"Error in query: %s [%d]\n",\
mysql_error(&mysql),mysql_errno(&mysql));
err_code=3;goto end_1;
}
if((result=mysql_store_result(&mysql))==NULL)
{ //get result
fprintf(stder 56、r,"Error in store_result: %s [%d]\n",\
mysql_error(&mysql),mysql_errno(&mysql));
err_code=4;goto end_1;
}
rslt=1;
sprintf(buf,"%2.2d|",err_code);
if(err_code!=0) goto end_1;
recs=mysql_num_rows(result); // 獲得行數(shù)
flds=mysql_num_fields(result); // 獲得域數(shù)
fp 57、rintf(stderr,"records=%d & fields=%d\n",recs,flds);
for(i=0;i 58、
wr_l=strlen(buf);
if((wr_l=write(ns,buf,wr_l))!=wr_l)
{
strcat(tmp,"Write socket ns error!\n");
fprintf(stderr,"Write socket error!\n");
}
else
{
strncat(tmp,buf,wr_l);
wr_l+=rd_l;
}
if(rslt!=0) mysql_free_result(result); // 釋放結(jié)果集
59、if(sql!=0) mysql_close(&mysql); // 釋放MYSQL對(duì)象
close(ns); // 關(guān)閉網(wǎng)絡(luò)鏈接
// 以下為寫(xiě)日志部分
strcat(tmp,"\n");
++wr_l;
if((flds=open(log,O_WRONLY|O_APPEND))==-1)
{ // 打開(kāi)日志文件
fprintf(stderr,"File %s open error!\n",log);
exit(-5);
}
if(write(flds,tmp,strlen(tmp))! 60、=strlen(tmp))
{ // 寫(xiě)日志
fprintf(stderr,"File %s write error!\n",log);
close(flds);exit(-6);
}
close(flds);
break;
case 2:
printf("Receive a client connect:%s\n",argv[1]);
fprintf(stderr,"%s get message from ns: %s\n",argv[0],buff);
//訪問(wèn)服務(wù)器端
61、 if((sp1=getservbyname(sservice,"tcp"))==NULL)
{
fprintf(stderr,"Error: getservbyname s1");
err_code=6;goto log;
}
if((hp1=gethostbyname(sdest))==0)
{
fprintf(stderr,"Error: gethostbyname s1");
err_code=7;goto log;
}
bzero(&sin1,sizeof(sin1));
62、 bcopy(hp1->h_addr,&sin1.sin_addr,hp1->h_length);
sin1.sin_family=hp1->h_addrtype;
sin1.sin_port=sp1->s_port;
if((ss=socket(AF_INET,SOCK_STREAM,0))==-1)
{
fprintf(stderr,"Error: socket s1");
err_code=8;goto log;
}
if(connect(ss,&sin1,sizeof(sin1))==-1)
63、 {
fprintf(stderr,"Error: connect s1");
close(ss); err_code=9;goto log;
}
printf("%s",buff);
if(write(ss,buff,rd_l)!=rd_l)
{ //to server
fprintf(stderr,"Write Socket ss ERROR! s1\n");
close(ss); err_code=10;goto log;
}
64、 char rep[20];
if((rd1l=read(ss,rep,20))==0)
{ //from server
fprintf(stderr,"Read Socket ss Error! s1\n");
close(ss);
err_code=11;goto log;
}
rep[rd1l]=\0;
printf("%s get reply: %s\n",argv[0],rep);
// close(ss);
65、
//fprintf(stderr,"and,send it back to client: %s\n",sbuf);
printf("rep:%s",rep);
if((rd1l=write(ns,rep,20))!=rd1l)
{
fprintf(stderr,"Write socket ns error llll!\n");
close(ns);
err_code=10;goto log;
}
// close(ns);
66、 char repp[500];
if((rd1l=read(ns,repp,500))==0)
{ //from server
fprintf(stderr,"jieshouzhangdan error\n");
close(ns);
err_code=11;goto log;
}
repp[rd1l]=\0;
printf("%s 接收信息: %s\n",argv[0],repp);
// close(ns);
if((rd1l=write(ss,repp,200))!=rd1l)
{
fprintf(stderr,"Write socket ss>>>>>> error!\n");
close(ss);
err_code=10;goto log;
}
//close(ss);
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 第七章-透射電子顯微鏡
- 群落的結(jié)構(gòu)(課件)
- 焊接基礎(chǔ)知識(shí)
- 水文地質(zhì)學(xué)課件
- 某公司員工工傷安全管理規(guī)定
- 消防培訓(xùn)課件:安全檢修(要點(diǎn))
- 某公司安全生產(chǎn)考核與獎(jiǎng)懲辦法范文
- 安全作業(yè)活動(dòng)安全排查表
- 某公司危險(xiǎn)源安全辨識(shí)、分類(lèi)和風(fēng)險(xiǎn)評(píng)價(jià)、分級(jí)辦法
- 某公司消防安全常識(shí)培訓(xùn)資料
- 安全培訓(xùn)資料:危險(xiǎn)化學(xué)品的類(lèi)別
- 中小學(xué)寒假學(xué)習(xí)計(jì)劃快樂(lè)度寒假充實(shí)促成長(zhǎng)
- 紅色插畫(huà)風(fēng)輸血相關(guān)知識(shí)培訓(xùn)臨床輸血流程常見(jiàn)輸血不良反應(yīng)
- 14.應(yīng)急救援隊(duì)伍訓(xùn)練記錄
- 某公司各部門(mén)及人員安全生產(chǎn)責(zé)任制