.net column
.NET開発者のためのブログメディア

クラウドサービスのイメージ

VB.netでソケット通信する方法は?ソケット通信の概要やサンプルプログラムをご紹介

2021年06月11日

SE
今では当たり前になってきたソケット通信について教えてください。

PM
世界中の方がデータ通信を利用していますね。では基本からおさらいしていきましょう。

ソケット通信とは?


ソケットはアプリケーション同士でデータ通信する際の出入り口のことを指します。通信する各アプリケーションの出入り口にはIPアドレスとポート番号が割り振られていて、このIPアドレスとポート番号を利用した通信をソケット通信と言います。

一つのネットワーク内には、同じIPアドレスとポート番号の組み合わせが無いように割り振るルールになっているので、通信するアプリケーションがネットワーク内に複数あった場合でも、相手を間違えずに通信することができます。

クライアントサーバシステムとは?

例えば、パソコンでブラウザを立ち上げてホームページを閲覧する場合、ソケット通信が行われています。この場合、パソコン側を「クライアント」、ホームページが保存されているインターネット上のコンピュータ側を「サーバ」と呼んでいます。

「クライアント」はサービスを受け取る側、「サーバ」はサービスを提供する側と言い換えることができます。このようにコンピュータをクライアント側、サーバ側に分けて役割分担する仕組みを、クライアントサーバシステムと言います。

ソケット通信で使うプロトコルとは?

ソケット通信では、TCP/IPまたは、UDP/IPのどちらかの通信プロトコルを使用します。通信プロトコルとは、データ通信する際の決められたルールや手順のことです。

日本国内だけでなく、海外のホームページを閲覧できたり、Windows PCとMac PCでメールをやり取りできたりするのは、共通の通信プロトコルが取り決められているためです。

TCP/IPとは?

TCPはTransmission Control Protocolの略です。ソケット通信の1つであるTCP/IPはインターネットで標準的に利用されているプロトコルで、ホームページの閲覧やファイル転送時などに用いられています。信頼性の高い通信を行うことができます。

コネクション型通信とも呼ばれ、通信開始前に相手との間で仮想的な通信路を確保したり、相手からの受信確認をチェックして届いていない場合は再送するなど、通信の信頼性を高める仕組みがあります。その代わり、通信に時間がかかるという難点もあります。

UDP/IPとは?

UDPはUser Datagram Protocolの略です。ソケット通信の1つであるUDP/IPもインターネットで標準的に利用されているプロトコルで、DNS(ドメイン名とIPアドレスの紐づけ)やNTP(各機器の時刻同期)などに用いられています。TCP/IPと比べると信頼性の面で劣りますが、高速性やリアルタイム性が優れています。

コネクションレス型通信とも呼ばれ、通信開始前に相手との間で事前のやり取りや再送処理などをしないため、高速性やリアルタイム性がある反面、信頼性が低いという難点があります。

TCP/IPとUDP/IPの比較

TCP/IPとUDP/IPはそれぞれ特徴が異なるため、用途に応じて使い分けされています。

TCP/IPは信頼性は高く通信データが届かなかった場合でも再送するため、時間が掛かっても確実に通信相手にデータを届けたい場合に使用します。一方、UCP/IPは高速性やリアルタイム性が高いので、早くデータを届けたい場合に使用します。

下表ではTCP/IPとUDP/IPの特徴を比較しています。

プロトコル TCP/IP UDP/IP
通信方式 コネクション型通信 コネクションレス型通信
信頼性 高い 低い
転送速度 遅い 速い
上位プロトコル HTTP、Telnet、FTPなど DNS、NTP、DHCPなど
用途 ホームページの閲覧、メール送受信、ファイル転送など 少量のデータ転送、ブロードキャスト、マルチキャスト、Videoストリーミングなど
特徴 通信相手とのコネクションを確立,信頼性が高い,データ欠落時の再送あり コネクションなし,高速,レスポンス速い,データ欠落しても再送なし

VB.netとは?

VB.netを使用すれば簡単にソケット通信プログラムを作成することができます。VB.netとは、Microsoftが開発したプログラミング言語で、画面を作りながらプログラミングをすることができるので初めてでも学びやすい言語です。

VB.netはMicrosoftのホームページから無料でダウンロードすることができます。解説しているホームページもたくさんあるので、分からないことがあっても検索すれば容易に解決策を知ることができます。以降にVB.netでソケット通信するサンプルプログラムを紹介します。

VB.netプログラムの設定方法

ここでは、VB.netを使用してソケット通信のプログラミングをする方法を説明します。

TCP/IPでは、クライアント側とサーバ側で処理が異なるため、別々のプログラムを作成する必要があります。クライアント側はTcpClientクラスを使用し、サーバ側はTcpListenerクラスを使用します。

サーバ側は基本的に受信待ち状態で待機しておき、クライアント側からの要求が来たら処理を行うような動作です。

TCP/IPサーバ側のサンプルプログラム

VB.netでTCP/IPソケット通信するサーバ側のサンプルプログラムです。サンプルプログラムは大きく分けると次のような処理を行っています。

1. 起動時の接続設定(FormTcpSv_Load処理)
2. 終了時の切断設定(FormTcpSv_FormClosed処理)
3. クライアント接続待ち(ServerThread処理)
4. クライアントとの送受信(ClientTcpIpクラス)

TCP/IPクライアント側のサンプルプログラム

VB.netでTCP/IPソケット通信するクライアント側のサンプルプログラムです。このサンプルではタイマー処理で受信データのチェックを行っています。サンプルプログラムは大きく分けると次のような処理を行っています。

1. 起動時の接続処理(FormTcpCl_Load処理)
2. 終了時の切断処理(FormTcpCl_FormClosed処理)
3. ソケット送信処理(Button1_Click処理)
4. ソケット受信処理(Timer1_Tick処理)

UDP/IPのサンプルプログラム

TCP/IP通信では、クライアント側とサーバ側でそれぞれ異なるプログラムを作成する必要がありました。UDP/IP通信の場合は、クライアント側とサーバ側で処理の区別は無いので共通のプログラム処理になります。

VB.netでUDP/IPソケット通信するサンプルプログラムです。このサンプルではタイマー処理で受信データのチェックを行っています。サンプルプログラムは大まかに次のような処理を行っています。
1. 起動時の接続設定(FormUdp_Load処理)
2. 終了時の切断設定(FormUdp_FormClosed処理)
3. ソケット送信処理(Button1_Click処理)
4. ソケット受信処理(Timer1_Tick)

SE
プログラムとTCP/IPを結ぶ出入り口がソケット通信ということですね。

PM
異なったOS同士での通信を可能にする共通ルールだと考えれば、理解が早くなりましね。

VB.netでソケット通信を理解する

今回はソケット通信の概要とVB.netを使用したソケット通信のサンプルプログラムをご紹介しました。

VB.netでは、TCP/IPならTcpClientクラスやTcpListenerクラス、UDP/IPならUdpClientクラスが用意されているので、これらを使用すればVB.netで簡単にソケット通信のプログラムを作成することができます。

実際にプログラミングすると、ソケット通信への理解もより一層深まるので、ぜひチャレンジしてみましょう。


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)

Search

Popular

reccomended

Categories

Tags

Jobs