岡村耕二 http://okaweb.ec.kyushu-u.ac.jp/lectures/in-ng/ TCP通信プログラム 課題と回答例 岡村耕二 http://okaweb.ec.kyushu-u.ac.jp/lectures/in-ng/ 情報ネットワーク
課題 1. UDP の宿題で作成した、「.」送信で通信が終了するプログラムを TCP バージョンに変更せよ。 // 送信側 case 'b': if(bind(sock, (struct sockaddr *)&saddr,sizeof(saddr)) < 0){ perror("TCPbind "); return -1; } listen(sock,8); sock2=accept(sock,(struct sockaddr *)&saddr2,&saddr2_len); printf("connected from %s.\n",inet_ntoa(saddr2.sin_addr)); { char buf[1024]; while(1){ bzero(buf,1024); // printf("> "); // fflush(stdout); // fgets(buf,1024,stdin); read(sock2,buf,1024); if(buf[0]=='.'&&strlen(buf)==2) break; printf("> %s",buf); break // 受信側 case 'c': while(1){ sock2=connect(sock, (struct sockaddr *)&saddr,sizeof(saddr)); if (sock2<0){ perror("TCPconnect "); sleep(3); } else break; { char buf[1024]; bzero(buf,1024); printf("> "); fflush(stdout); fgets(buf,1024,stdin); write(sock,buf,strlen(buf)); if(buf[0]=='.'&&strlen(buf)==2) // printf("> %s",buf); 情報ネットワーク
課題 2.ファイルを通信するプログラムを作成せよ。数Mbyteのファイルの転送が正しく行えるか、確認せよ。 // 送信側 { char buf[1024]; bzero(buf,1024); while(fgets(buf,1024,stdin)!=NULL){ write(sock,buf,strlen(buf)); } // 受信側 { char buf[1024]; int i,re; while(1){ re=read(sock2,buf,1024); if(re<=0) break; for(i=0;i<re;i++) printf("%c",buf[i]); } 情報ネットワーク