システムプログラム02-ver02_server

「システムプログラム02-ver02_server」の編集履歴(バックアップ)一覧はこちら

システムプログラム02-ver02_server」(2010/07/14 (水) 18:35:09) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

/* ポート番号9000を使用する */ #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netdb.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #define NSTRS 1 /* 文字列の個数 */ #define STRMAX 60 /* 文字列長さ */ char *strs[NSTRS]; char *root; extern int errno; int main(int ac, char *av[]){ char c; FILE *fp; int fromlen; char hostname[64]; struct hostent *hp; register int i,s,ns; struct sockaddr_in sin, fsin; printf(">> server run\n"); gethostname(hostname,sizeof(hostname)); if((hp=gethostbyname(hostname))==NULL){ fprintf(stderr,"%s: unknown host.\n", hostname); exit(1); } fprintf(stderr,">> hosting : %s\n", hostname); if((s=socket(AF_INET,SOCK_STREAM,0))<0){ perror("clisent: socket"); exit(1); } sin.sin_family=AF_INET; sin.sin_port=htons(9000); sin.sin_addr.s_addr=htonl(INADDR_ANY); if(bind(s,(struct sockaddr*)&sin,sizeof(sin))<0){ perror("server: bind"); exit(1); } if(listen(s,5)<0){ perror("server:listen"); exit(1); } if((ns=accept(s,(struct sockaddr*)&fsin, &fromlen)) <0){ perror("server:accept"); exit(1); } fp=fdopen(ns,"r"); /* クライアントから文字列をstrs[i]に表示 変換 格納 */ printf(">> text from client\n"); for(i=0;i<NSTRS;i++){ strs[i]=malloc(STRMAX); root=strs[i]; while((c=fgetc(fp))!=EOF){ printf("%c",c); if(('A'<=c)&&(c<='Z')){c=c+32;} else if(('a'<=c)&&(c<='z')){c=c-32;} *strs[i]=c; if(c=='\n'){break;} strs[i]++; } strs[i]=root; } /* 文字列をクライアントに送る*/ printf(">> send to client\n"); for(i=0;i<NSTRS;i++){ printf(strs[i]); send(ns,strs[i],strlen(strs[i]),0); } close(s); exit(0); }

表示オプション

横に並べて表示:
変化行の前後のみ表示: