• 締切済み

c言語のプログラミングについて教えてください!

コネクション型Soket通信のプログラミングについて教えてください。 空欄と打ってるところを教えてほしいです。かなり急ぎです! #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <netdb.h> #include <stdio.h> #include <fcntl.h> #include <stdlib.h> #include <strings.h> #define PORT_NO 8001 void cliepro(int); /*メインルーチン(クライアント)*/ main(int argc, char **argv) { int sofd; /* ソケット記述子*/ struct hostent *shost; /* hostent構造体*/ struct sockaddr_in sv_addr; /* sockaddr_in構造体 */ /*ソケットの作成(TCP) 空欄 空欄 空欄 */ /*サーバのアドレスを取得 空欄 空欄 空欄 */ /*サーバのアドレスを設定*/ bzero((void *)&sv_addr,sizeof(sv_addr)); sv_addr.sin_family = AF_INET; sv_addr.sin_port = htons(PORT_NO); memcpy((void *)&sv_addr.sin_addr,(void *)shost->h_addr,shost->h_length); /*ソケットの接続要求 空欄 空欄 空欄 */ cliepro(sofd); close(sofd); exit(0); } /*処理ルーチン(クライアント)*/ void cliepro(int sofd) { int cc,nbyte, MAXRMSG; char smsg[100], rmsg[100]; MAXRMSG=sizeof(rmsg); bzero(rmsg, MAXRMSG); while(1){ printf("Enter string :"); fgets(smsg, sizeof(smsg), stdin); if(feof(stdin)) break; nbyte=strlen(smsg); if (send(sofd, smsg, nbyte, 0) < 0) { perror("send"); } else { cc=recv(sofd,rmsg,MAXRMSG,0); if(cc<0) perror("recv"); else { printf("%s",rmsg); bzero(rmsg,MAXRMSG); } } } }

みんなの回答

  • bid
  • ベストアンサー率0% (0/1)
回答No.2

/*ソケットの作成(TCP)*/ if ((sofd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { /* error */ } /*サーバのアドレスを取得*/ if (! (shost = gethostbyname(argv[1]))) { /* error */ } /*ソケットの接続要求*/ if (connect(sofd, (struct sockaddr*)&sv_addr, sizeof sv_addr) == -1) { /* error */ }

  • pa_cotta
  • ベストアンサー率43% (25/58)
回答No.1

こちらに詳しく書いています。まるまるコピペではダメですが、適度に書き換えればいけるでしょう。 http://daimaru.sakura.ne.jp/c_room/c_room10.html なんか丸投げに近いくらい肝心な部分が分かっていないようですが、仕組みや通信の内容などちゃんと理解してるんでしょうか…

関連するQ&A