⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.ec

📁 在IBM RS6000小型机上AIX操作系统下INFORMIX数据库C源代码有通讯和管理程序
💻 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 + -