/* ポート番号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];
extern int errono;
void input_strs(){
int i;
char e[]="\n";
for(i=0;i<NSTRS;i++){
printf("str[%d]:",i);
strs[i]=malloc(STRMAX);
gets(strs[i]);
strcat(strs[i],e);
}
}
int main(int ac, char *av[]){
char c;
FILE *fp;
char hostname[64];
register int i,s;
struct hostent *hp;
struct sockaddr_in sin;
printf(">> client run\n");
/* まずホストネームを取得 */
printf("__connect server name ? :");
gets(hostname);
if((hp=gethostbyname(hostname))==NULL){
fprintf(stderr,"%s: unknown host.\n", hostname);
exit(1);
}
if((s=socket(AF_INET,SOCK_STREAM,0))<0){
perror("clisent: socket");
exit(1);
}
sin.sin_family=AF_INET;
sin.sin_port=htons(9000);
bcopy(hp->h_addr,&sin.sin_addr,hp->h_length);
if(connect(s, (struct sockaddr*)&sin, sizeof(sin))<0){
perror("client: connect");
exit(1);
}
/* 送る文字列を作成する */
input_strs();
/* こちらから文字列をサーバーに送る */
for(i=0;i<NSTRS;i++)
send(s,strs[i],strlen(strs[i]),0);
fp=fdopen(s,"r");
/* サーバーから文字列を読み取り、それを表示する */
printf(">> text from server\n");
for(i=0;i<NSTRS;i++){
while((c=fgetc(fp))!=EOF){
putchar(c);
if(c=='\n')
break;
}
}
/*
*ここで、通信を切断するために、close()を用いる
*/
close(s);
exit(0);
}
最終更新:2010年07月14日 18:33