トップ ITインフラ ネットワーク プログラミング

ネットワークプログラミング―C言語とJavaでソケット通信するサンプルなど

ネットワークプログラミングをテーマにまとめています。ネットワークプログラミングの解説に加え、C言語とJavaプログラミングの補足やC言語とJavaでソケット通信するサンプルプログラムなども紹介しています。

▲記事トップへ

目次

このページの目次です。

1. ネットワークプログラミングとは
2. ソケット通信
3. ソケットプログラミングの基礎知識
4. サンプルプログラム

更新履歴

1. ネットワークプログラミングとは

ネットワークプログラミングは、ネットワークを利用したプログラムの作成を目的としたプログラミングです。

ソケットを使用したプログラミング

ネットワークを使用した通信はルータ、FW、コンピュータのOSなどさまざまな構成要素が関係しますが、OSI基本参照モデルで玉ねぎのように規約が階層構造に決められており、各階層がカプセル化という概念で隠ぺいされています。 プログラミングで使用するのはOSの提供するネットワークインタフェース、ソケットになり、ネットワークプログラミングといった場合は、一般的にソケットを使用したプログラミングのことをいいます。

OSI基本参照モデル

コンピュータ同士が通信を行う際、同じルール(規約)でやり取りする必要があります。 またアプリケーションだけでなくハードウェア各種も関係していて、ルール(規約)は7階層に整理されて効率的に通信が行えるようになっています。 この7階層のルールをOSI基本参照モデルといいます。

規約は玉ねぎのように構成されており、上位の階層はカプセル化されており、同じ階層だけ気にして通信が行えるようになっています。 データはパケットと呼ばれる小さな塊に分割されて送られます。

参考)通信プロトコル

OSI基本参照モデルの7階層と対比しながら通信プロトコルについてをまとめていきます。

詳細

2. ソケット通信

プログラム同士のネットワークを使用した通信には必ず入口と出口がありますね。 その入口と出口に当たるのがソケットで、そのソケットを使用した通信を「ソケット通信」と呼びます。 ソケット通信について解説していきます。

ソケットとは

ソケットとは、BSD系UNIXを起源とするC言語のAPIです。 C言語によるアプリケーション開発でのプロセス間通信、特にコンピュータネットワークに関するライブラリです。

ソケット通信で使われるプロトコル

ソケット通信では、下位にネットワーク層のプロトコルであるIPプロトコル、その上のトランスポート層のプロトコルであるTCPもしくはUDPというプロトコルで通信を行います。

TCPの上層のアプリケーション層のプロトコルもあります。 独自に決めることも多いですが、Webで使われるHTTP、メールで使われるSMTPやPOP、ファイル転送で使うFTPなどのプロトコルが有名です。

3. ソケットプログラミングの基礎知識

ソケットプログラミングの基礎知識についてふれていきます。

C言語

前提としてC言語の基礎知識が必要です。

知識の補足のための参考

ソケットインタフェース

ソケットインタフェースについて解説していきます。

UNIXとLinuxはバークレーソケット、WindowsはWinSock

ソケットは、起源を強調してBSDソケット、バークレーソケットなどとも呼ばれ、Berkeley Sockets APIがスタンダードでUNIXやLinxではこれを使用します。 ただし、WindowsはWinSockと呼ばれるプログラミングインタフェースが実装されており、Windowsではこちらを使用するのが一般的です。

バークレーソケット

バークレーソケットのAPIの例です。

API説明
socket()ソケットを作成する
accept()ソケットへの接続を待つ
bind()ソケットに名前を付ける
connect()ソケットの接続を行う
close()ソケットを閉じる

WinSock

WinSockのAPIの例です。

API説明
closesocket()ソケットを閉じる
WSAStartup()WinSockの使用を開始する
WSACleanup()WinSockの使用を終了する
WSAGetLastError()ソケット関連のエラーコードを取得する
WSASocket()ソケットを作成する

4. サンプルプログラム

ここではネットワークプログラムの例を紹介しています。

Java

サンプルではJavaのプログラムが登場します。

知識の補足のための参考

Java言語とC言語のプログラムで通信する例

Javaのクライアント(Windows)からCのサーバ(Linux)に接続して、「Hello World!!」という電文を受信して クライアント側に表示するプログラムの簡単なサンプルプログラムです。

詳細

更新履歴

戻る

スポンサーリンク

サイト内のページ

言語
C・C++ /HTML /Java /JavaScript /PHP /シェルスクリプト

開発環境
Ant /Eclipse /Fiddler /gcc /gdb /Git /g++ /JDK /JMeter /JUnit /Teraterm /ZAP

技術・仕様
Ajax /CORBA /Java EE(旧称J2EE) /JNI

ライブラリ/Framework/CMS
bootstrap /jQuery /Lucene /MyBatis /Spring /Struts /WordPress

Web API
Google Maps

ITインフラOSとミドルウェア
Linux /Windows /シェル
Apache/Tomcat /MySQL /Redis /Solr

ITインフラサーバー
公開Webサーバー

ITインフラネットワーク
プログラミング /構築

ITインフラセキュリティ
公開サーバーのセキュリティ

PC製品
ZOTAC

SI
ホームページの作り方 /小さな会社のISMS

その他
IT用語 /ITスキル体系

スポンサーリンク

関連サイト内検索ツール

zealseedsおよび関連サイト内のページが検索できます。

IPアドレス確認ツール

あなたのグローバルIPアドレスは以下です。

44.192.253.106

HTMLの表示色確認ツール

パスワード生成ツール

文字数のプルダウンを選択して、取得ボタンを押すと「a~z、A~Z、0~9」の文字を ランダムに組み合わせた文字列が表示されます。

ここに生成されます。

スポンサーリンク