Network Programming in C ネットワークプログラミング Lecture 8, Network Programming (3) 第8回「ネットワークとプログラミング(3)」 2010年秋学期 Rodney Van Meter.

Slides:



Advertisements
Similar presentations
だい六か – クリスマスとお正月 ぶんぽう. て form review ► Group 1 Verbs ► Have two or more ひらがな in the verb stem AND ► The final sound of the verb stem is from the い row.
Advertisements

Humble and Honorific Language By: Word-Master Leo, Mixer of Ill Beats.
て -form - Making て -form from ます -form -. With て -form, You can say... ~てもいいですか? (= May I do…) ~てください。 (= Please do…) ~ています。 (= am/is/are doing…) Connecting.
Essay writing rules for Japanese!!. * First ・ There are two directions you can write. ・よこがき / 横書き (same as we write English) ・たてがき / 縦書き (from right to.
VE 01 え form What is え form? え? You can do that many things with え form?
SS2-15:A Study on Image Recognition and Understanding
The Bar バー.
五段動詞の歌 ごだんどうしのうた.
英語勉強会.
第1回レポートの課題 6月15日出題 今回の課題は1問のみ 第2回レポートと併せて本科目の単位を認定 第2回は7月に出題予定
日本語の文法 文型(ぶんけい)をおぼえよう!
 辞書系(じしょけい).
日本語... ジェパディー! This is a template for you to use in your classroom.
Android Development 白熱道場
ネットワークプログラミング 第7回「ネットワークとプログラミング(2)」
システムプログラミング 第13回 情報工学科 篠埜 功.
Chris Burgess (1号館1308研究室、内線164)
What did you do, mate? Plain-Past
Verb Plain Negativeform
Ch13-1 TB250 てフォーム.
Verb たform + ことがあります Past experience.
なんがつにいきますか? What month do you/will you go?
A 02 I like sushi! I like origami!
十年生の 日本語 Year 10 Writing Portfolio
Reasonので + Consequence clause
Chapter 4 Quiz #2 Verbs Particles を、に、で
Provisioning on Multiple Network(NIC) env
定期考査2 英語.
The Sacred Deer of 奈良(なら)
Who Is Ready to Survive the Next Big Earthquake?
Did he/she just say that? Get your head out of the gutter! Oh wait….
“You Should Go To Kyoto”
VTA 02 What do you do on a weekend? しゅうまつ、何をしますか。
第5回ネットワークプログラミング 中村 修.
ストップウォッチの カード ストップウォッチの カード
2010年秋学期 Rodney Van Meter Network Programming in C #1: Introduction ネットワークプログラミング C言語 第1回「イントロダクション」 2010年秋学期 Rodney Van Meter
第11回ネットワークプログラミング 中村 修.
システムプログラミング 第13回 プロセス間通信(続き) 情報工学科 篠埜 功.
Session 8: How can you present your research?
UDPエコーサーバ UDP-echoサーバのプログラムモデル(Cプログラム) サーバで利用するソケット関数(Cプログラム)
システムプログラミング 第13回 情報工学科 篠埜 功.
ネットワークプログラミング 第4回「C言語の基礎~ポインタと配列」
Causative Verbs Extensively borrowed from Rubin, J “Gone Fishin’”, Power Japanese (1992: Kodansha:Tokyo) Created by K McMahon.
-Get test signed and make corrections
ネットワークプログラミング 第3回「C言語の基礎~コマンドライン引数・構造体・ポインタ」
Term paper, Report (1st, first)
My Favorite Movie I will introduce my favorite movie.
Where is Wumpus Propositional logic (cont…) Reasoning where is wumpus
第24回応用言語学講座公開連続講演会 後援:国際言語文化研究科教育研究プロジェクト経費
Question Words….
Suzaku and the Results ~1 years after launch Suzaku (朱雀)
Network Programming in C Lecture 6: Network Programming (1) ネットワークプログラミング 第6回「ネットワークとプログラミング(1)」 2010年秋学期 Rodney Van Meter.
2019/4/22 Warm-up ※Warm-up 1~3には、小学校外国語活動「アルファベットを探そう」(H26年度、神埼小学校におけるSTの授業実践)で、5年生が撮影した写真を使用しています(授業者より使用許諾済)。
Term paper, report (2nd, final)
ロールプレイアクティビティ ある状況設定の中で、登場人物になりきり会話をします。 CAN-DO: 状況に応じた適切な質問をすることができる。
第1回レポートの課題 6月24日出題 今回の課題は1問のみ 第2回レポートと併せて本科目の単位を認定 第2回は7月に出題予定
千代浩司 高エネルギー加速器研究機構 素粒子原子核研究所
千代浩司 高エネルギー加速器研究機構 素粒子原子核研究所
ー生命倫理の授業を通して生徒の意識に何が生じたかー
The difference between adjectives and adverbs
Created by L. Whittingham
英語音声学(7) 音連結.
岡村耕二 TCP通信プログラム 岡村耕二 情報ネットワーク.
Term paper, report (2nd, final)
BW: 英語で書いて下さい 1)小さくする 2)うるさく話す 3)大きく書く 4)上手になる (なる=become)
岡村耕二 UDP通信プログラム 課題と回答例 岡村耕二 情報ネットワーク.
Improving Strategic Play in Shogi by Using Move Sequence Trees
千代浩司 高エネルギー加速器研究機構 素粒子原子核研究所
ポートスキャン実習 2002年9月19日 修士1年 兼子 譲 牧之内研究室「インターネット実習」Webページ
岡村耕二 TCP通信プログラム 岡村耕二 情報ネットワーク.
Presentation transcript:

Network Programming in C ネットワークプログラミング Lecture 8, Network Programming (3) 第8回「ネットワークとプログラミング(3)」 2010年秋学期 Rodney Van Meter

今期の授業スケジュール(予定) 第1回 9/28: Introduction / イントロダクション 第2回 10/5:C Basics~Functions, Variables, Data Types・ Makefiles 第3回 10/12:C Basics~Command Line Arguments ・ Structures ・ Pointers 第4回 10/19:C Basics~Pointers & Arrays ・ Lists 第5回 10/26: file I/O・ Network Protocols 第6回 11/2: Network Programming (1)‏ 第7回 11/9: Network Programming (2)‏ 第8回 11/16: Network Programming (3) 11/23: No class! ORF! Please come! 第9回 11/30: Applied Network Programming (1) 第10回 12/7: Applied Network Programming (2) 第11回 12/14: Work on Projects 第12回 12/21: Work on Projects 第13回 1/11: Final Presentations!!!

Today Makefiles & libraries Naming AF-independent coding: Itojun’s rules struct sockaddr_storage getaddrinfo() v. gethostbyname()‏ inet_aton() v. inet_pton()‏

Attendance Server Did you get your program to connect to it properly? Same this week, two weeks from now will be different!

Makefiles

Executables Stop using “./a.out”! Stop doing “gcc myfile.c” by hand! 工学っぽくない。

Libraries Big projects use more than one source file Can be put into libraries made with ar linked into final executable using ld (or gcc)

gethostname()‏ Get your own name 自分のホスト名を取得する #include <unistd.h> int gethostname(char *name, size_t len); 返り値:成功した場合0,失敗した場合-1が返る 例: char shostname[HOST_NAME_MAX+1]; gethostname(shostname, sizeof(shostname));

実習:gethostname()‏ mylib.cに入れよう。 printmyhostnameというプログラムを作りましょう. Makefileを使ってね。

gethostbyname()‏ ホスト名からIPアドレスを得る 古い方法なんだけど、知っているべき! #include <unistd.h> struct hostent gethostbyname(const char *name); 例 struct sockaddr_in sin; struct hostent *shost; shost = gethostbyname(argv[1]); sin.sin_addr = *(struct in_addr *)hp->h_addr;

sample #include <netdb.h> int main (int argc, char *argv[] ) { int sock_fd; struct sockaddr_in sin; char buf[BUF_SIZE]; int readlen; struct hostent *hp; hp = gethostbyname( argv[1] ); /* add */ sock_fd = socket(AF_INET, SOCK_STREAM, 0); sin.sin_family = AF_INET; sin.sin_port = htons(SERV_PORT); sin.sin_addr = *(struct in_addr *)hp->h_addr; }

hostent構造体 struct hostent{ char *h_name; /* official name of host */ char **h_aliases; /* alias list */ int h_addrtype /* host address type */ int h_length /* length of address */ char **h_addr_list; /* list of addresses                                           */ } #define h_addr h_addr_list[0] /* for backward compatibility

練習: ポイント sock_fd = socket(AF_INET, SOCK_STREAM, 0); sin.sin_family = AF_INET; sin.sin_port = htons(SERV_PORT); sin.sin_addr = *(struct in_addr *)hp->h_addr; connect(sock_fd, (struct sockaddr *)&sin, sizeof(sin)); fgets(buf,sizeof(buf),stdin); write(sock_fd, buf, readlen); readlen = read(sock_fd, buf, sizeof(buf)); printf("%s\n",buf);

AF-independent Code: itojun’s Rules avoid struct in_addr and struct in6_addr. use getaddrinfo() and getnameinfo() everywhere. do not hardcode knowledge about particular AF. http://www.kame.net/newsletter/19980604/ http://www.faqs.org/rfcs/rfc3493.html http://www.usenix.org/publications/library/proceedings/usenix2000/freenix/metzprotocol.html

avoid struct in_addr avoid struct in_addr and struct in6_addr use sockaddr_storage instead more generic, but we still run into trouble: see the Mac problems from last week

use getaddrinfo() everywhere use getaddrinfo() and getnameinfo() everywhere. avoid gethostbyname(), inet_aton()‏

no AF-dependent code Bad example: /* BAD EXAMPLE */ switch (sa->sa_family) { case AF_INET: salen = sizeof(struct sockaddr_in); break; } Instead, use res->ai_addrlen returned by getaddrinfo(3)‏

itojun’s Rules: inet_pton()‏ avoid using when possible not very AF-independent stick with getaddrinfo()‏

実習:getpeername()‏ mylib.cに入れよう。 TCPサーバに使いましょう。 printpeername()という関数をつくりましょう。 mylib.cに入れよう。 TCPサーバに使いましょう。 inet_ntop()かgetnameinfo()をつかう。

Homework (Two Weeks!) More detailed project proposal Program that prints all addresses for a given name, using getaddrinfo() Must be done using a function in a separate library file, mylib.c Must have Makefile for library mylib.a TCP client that reads index.html from a web server Should use same functions to print out info about host & connection

More Complete Proposal for Term Project “Value Proposition” (why do I care?) Related work (has it been done before?) Key Idea How you will evaluate Schedule with technical milestones 次ページにポイント説明あり