岡村耕二 http://okaweb.ec.kyushu-u.ac.jp/lectures/in-ng/ TCP通信プログラム 岡村耕二 http://okaweb.ec.kyushu-u.ac.jp/lectures/in-ng/ 情報ネットワーク.

Slides:



Advertisements
Similar presentations
TCP/IP によるチャットプログラ ム 薄井 秀晃. 基礎知識編 TCP/IP とは? IP とは・・・ Internet Protocol の略称であり通信方法の技術的なルールで あり、実際にデータを送受信する前にデータを小さなデータ に分割し、それに発信元と受信先の IP アドレスを付加させて.
Advertisements

N チャンネル通信のための 経路制御 小川 真人 木下研究室. Nチャンネル通信 N本の経路を用いて、ファイルを分散させて通信を行う方式である。 分散されたファイルが、すべて違う経路を通り相手に届くことが理想である。
NetAgent P2P検知技術 NetAgent.
第1回.
システムコール 低水準入力 ファイルディスクリプタ ソケット
ネットワークプログラミング 第7回「ネットワークとプログラミング(2)」
システムプログラミング 第13回 情報工学科 篠埜 功.
CS-B3 ネットワークプログラミング 峰野博史
TCP (Transmission Control Protocol)
Windows Network Programming
TCPソケットプログラミング ソケットプログラミング TCP-echoのデータ通信手順
トランスポート層.
ま と め と 補 足 ネットワークシステムⅠ 第15回.
岡村耕二 情報ネットワーク 岡村耕二 情報ネットワーク.
千代浩司 高エネルギー加速器研究機構 素粒子原子核研究所
第5回ネットワークプログラミング 中村 修.
岡村耕二 情報ネットワーク 岡村耕二 情報ネットワーク.
千代浩司 高エネルギー加速器研究機構 素粒子原子核研究所
岡村耕二 情報ネットワーク 岡村耕二 情報ネットワーク.
Step.9 VPN VPNのトンネルを張る PC 3 PC 1 PC 2 論理ネットワーク1 xx (自動割当)
第11回ネットワークプログラミング 中村 修.
システムプログラミング 第13回 プロセス間通信(続き) 情報工学科 篠埜 功.
岡村耕二 情報ネットワーク 岡村耕二 情報ネットワーク.
UDPエコーサーバ UDP-echoサーバのプログラムモデル(Cプログラム) サーバで利用するソケット関数(Cプログラム)
システムプログラミング 第13回 情報工学科 篠埜 功.
ソケットプログラム(TCP,UDP) EasyChat開発
システムプログラミング 第12回 プロセス間通信 情報工学科 篠埜 功.
サイバーセキュリティ バッファオーバフロー
岡村耕二 トランスポート層 岡村耕二 情報ネットワーク.
岡村耕二 トランスポート層 ソケットプログラミング 岡村耕二 情報ネットワーク.
岡村耕二 トランスポート層 岡村耕二 情報ネットワーク.
ソケットプログラム(TCP,UDP) EasyChat開発2
インターネットにおける真に プライベートなネットワークの構築
ユビキタスシステムアーキテクチャ 第5回 ネットワークプログラミングの基礎
岡村耕二 トランスポート層 岡村耕二 情報ネットワーク.
岡村耕二 情報ネットワーク 岡村耕二 情報ネットワーク.
Ibaraki Univ. Dept of Electrical & Electronic Eng.
UDPマルチキャストチャット    空川幸司.
ネットワークプログラミング (5回目) 05A1302 円田 優輝.
Webプロキシ HTTP1.0 ヒント CS-B3 ネットワークプログラミング  &情報科学科実験I.
TCP/IPとプロセス間通信 2007年1月12日 海谷 治彦.
Talkプログラムのヒント 1 CS-B3 ネットワークプログラミング  &情報科学科実験I.
岡村耕二 トランスポート層 岡村耕二 情報ネットワーク.
岡村耕二 トランスポート層 岡村耕二 情報ネットワーク.
システムプログラミング 第7回、8回 ファイルシステム関連の システムコール
ネットワーク・プログラミング ソケットオプションとスレッド.
岡村耕二 トランスポート層 岡村耕二 情報ネットワーク.
岡村耕二 情報ネットワーク 岡村耕二 情報ネットワーク.
C言語演習 情報ネットワーク特論.
岡村耕二 情報ネットワーク 岡村耕二 情報ネットワーク.
システムプログラミング 第7回、8回 ファイルシステム関連の システムコール
岡村耕二 TCP通信プログラム 課題と回答例 岡村耕二 情報ネットワーク.
トラフィックプロファイラAGURIの設計と実装
システムプログラミング 第12回 プロセス間通信 情報工学科 篠埜 功.
システムプログラミング 第12回 プロセス間通信 情報工学科 篠埜 功.
岡村耕二 情報ネットワーク 岡村耕二 情報ネットワーク.
高度プログラミング演習 (11).
千代浩司 高エネルギー加速器研究機構 素粒子原子核研究所
ネットワーク・プログラミング TCPサーバ.
ネットワーク・プログラミング ソケットプログラミングと共有メモリ.
ネットワーク・プログラミング 1対多のプロセス間通信.
C言語プログラミング・課題 ファイルを読み込んで、その内容を表示するプログラムを作成せよ。
岡村耕二 UDP通信プログラム 課題と回答例 岡村耕二 情報ネットワーク.
ネットワーク・プログラミング マルチタスク.
TCP/IPの通信手順 (tcpdump)
UDPデータグラムヘッダ 牧之内研究室 修士1年 久保正明.
第6章 インターネットアプリケーション 6.1 インターネットアプリケーション 6.2 Javaによるネットワーク処理 6.3 電子メール
ポートスキャン実習 2002年9月19日 修士1年 兼子 譲 牧之内研究室「インターネット実習」Webページ
岡村耕二 情報ネットワーク 岡村耕二 情報ネットワーク.
岡村耕二 TCP通信プログラム 岡村耕二 情報ネットワーク.
Presentation transcript:

岡村耕二 http://okaweb.ec.kyushu-u.ac.jp/lectures/in-ng/ TCP通信プログラム 岡村耕二 http://okaweb.ec.kyushu-u.ac.jp/lectures/in-ng/ 情報ネットワーク

TCP通信プログラム(基本接続) 情報ネットワーク #include <stdio.h> #include <strings.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> main(narg,arg) int narg; char **arg; { int sock,sock2,saddr2_len; int s_addr; unsigned short port; struct sockaddr_in saddr,saddr2; s_addr=inet_addr(arg[1]); port=atoi(arg[2]); bzero(&saddr,sizeof(struct sockaddr_in)); bzero(&saddr2,sizeof(struct sockaddr_in)); saddr.sin_family = AF_INET; saddr.sin_addr.s_addr = s_addr; saddr.sin_port = htons(port); sock=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); switch (arg[3][0]){ 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)); break; case 'c': if(connect(sock, (struct sockaddr *)&saddr,sizeof(saddr)) < 0){ perror("TCPconnect "); getchar(); close (sock); 情報ネットワーク

TCP と UDP の違い(bind) UDP: TCP bind したソケットIDから直接受信を行う bind したソケットはID は accept により、接続要求受け付けに用いられ、accept 後、通信用のソケットIDが生成され、その ID を用いて通信が行われる。 情報ネットワーク

bind で与えるべきIPアドレス saddr.sin_family = AF_INET; saddr.sin_addr.s_addr = s_addr; saddr.sin_port = htons(port); sock=socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(bind(sock, (struct sockaddr *)&saddr,sizeof(saddr)) < 0){ perror("TCPbind "); 接続は誰が行うかわからない。つまり、 予想はできないし、指定できる場合は少ない。そのため、誰とでも接続が行えるように 0.0.0.0 を指定する。ただし、サービスを識別するためのポート番号は適切な値にする必要がある。 情報ネットワーク

TCP と UDP の違い(connect) UDP: TCP 通信相手が bind していなくても connect の発行は可能 connect するためには、通信相手が先に予め、 bind/listen/accept しておく必要がある。 情報ネットワーク

送信、受信する関数は同じ TCP も UDP と同じく write() 関数によるソケットへの書き込みで送信を行い、read()関数によるソケットからの読み出しで受信を行う。 ただし、TCP は bind したソケットIDではなく、accept したソケットID。 情報ネットワーク

課題 UDP の宿題で作成した、「.」送信で通信が終了するプログラムを TCP バージョンに変更せよ。 ファイルを通信するプログラムを作成せよ。 数Mbyteのファイルの転送が正しく行えるか、確認せよ。 情報ネットワーク

宿題(12月21日まで) 課題で作成したファイル転送のプログラムについて、転送時の通信速度の測定、その結果の表示ができるように改良せよ。 情報ネットワーク