📄 server.ec
字号:
#include <sys/stat.h>#include <signal.h>#include <netdb.h>#include <netinet/tcp.h>#include "def/dlmsg.h"$include sqlca;int newsockfd , sockfd;main ( ){ int childpid; unsigned long clilen; struct servent *sp; struct sockaddr_in cli_addr , serv_addr; if(!(sp = getservbyname( "dlmgsrv", "tcp" ))) { puts("can not found dlmgsrv in /etc/services!!"); exit(0); } if(fork()!=0) exit(0); signal(SIGCLD, SIG_IGN); signal(SIGINT, SIG_IGN); signal(SIGQUIT, SIG_IGN); if ( (sockfd = socket ( AF_INET ,SOCK_STREAM,0 ) ) < 0 ) Quit("socket error"); bzero ( ( char *) & serv_addr, sizeof( serv_addr ) ); serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = htonl ( INADDR_ANY ); serv_addr.sin_port = sp->s_port; if ( bind(sockfd,(struct sockaddr*)&serv_addr,sizeof(serv_addr)) < 0 ) Quit("bind error"); if (listen ( sockfd, 5 ) <0 ) Quit("listen error"); for ( ; ; ) { clilen = sizeof ( cli_addr ); newsockfd=accept(sockfd,(struct sockaddr *)&cli_addr,&clilen ); if ( newsockfd < 0 ) Quit("accept error"); if ( (childpid = fork()) < 0 ) { close ( newsockfd ); Quit("fork error"); } else if (childpid==0) { $database hcdlyw; if(sqlca.sqlcode!=0) { printf("DLYW 数据库打开错误!!"); exit(0); } proc(newsockfd); $ close database; exit(0); } close ( newsockfd ); } close ( sockfd );}sndfp(sndname)char *sndname;{ FILE *fp; char tmp[1026]; int c,len; int i,n; fp=fopen(sndname,"r"); if(fp==NULL) return(0); while(1){ len=fread(tmp,1,1024,fp); if(len<=0)break; sndbuf(tmp,len); if(len<1024)break; } fclose(fp); return(1);}sndmsg(msgbuf)DL_MSG *msgbuf;{ int rc; rc = write ( newsockfd, msgbuf, sizeof(DL_MSG)); if(rc<=0 || rc!=sizeof(DL_MSG)) return(0); return(1);}sndbuf(cxbuf,len)char *cxbuf;int len;{ int nleft,rc; nleft=len; while(nleft>0) { rc = write ( newsockfd, cxbuf, nleft); if( rc<=0 ) return(rc); nleft-=rc; cxbuf+=rc; } return(1);}rcvmsg(msgbuf)DL_MSG *msgbuf;{ int rc; rc = read ( newsockfd, msgbuf, sizeof(DL_MSG)); if(rc<=0 || rc!=sizeof(DL_MSG)) return(0); return(1);}Quit (str)char *str;{ printf("server: %s!!",str); close (sockfd); exit(1);}rcvfp(rcvname)char *rcvname;{ FILE *fp; char tmp[1026]; int rc,i,len; fp=fopen(rcvname,"w"); if (fp==NULL) return(0); for(i=0;(len=rcvbuf(tmp,1024))>0;i++) fwrite(tmp,1,len,fp); fclose(fp); chmod(rcvname,0660); if (i==0) return(0); return(1);}rcvbuf(cxbuf,len)char *cxbuf;int len;{ int nleft,rc; nleft=len; while(nleft>0) { rc = read( newsockfd, cxbuf, nleft); if( rc<=0){ if(nleft==len) return(rc);else return(len-nleft);} nleft-=rc; cxbuf+=rc; } return(len);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -