1.ネットワークプログラミングにおける2つの主要な問題
1つは、ネットワーク上に1つ以上のホストを正確に見つける方法であり、もう1つはホストを見つけた後にデータを確実に効率的に送信する方法です。
TCP/IPプロトコルでは、IPレイヤーは主にネットワークホストの位置とデータ送信のルーティングを担当します。 IPアドレスは、インターネット上のホストを一意に決定できます。
TCPレイヤーは、ネットワークプログラミングの主なオブジェクトであるアプリケーションのための信頼性の高い(TCP)または非信頼できない(UDP)データ送信メカニズムを提供し、一般にIPレイヤーがデータを処理する方法を気にする必要はありません。
現在最も人気のあるネットワークプログラミングモデルは、クライアント/サーバー(C/S)構造です。つまり、通信当事者の1つは、顧客がリクエストを送信して応答するのを待つサーバーとして機能します。顧客は、サービスが必要なときにサーバーに適用されます。通常、サーバーは常にデーモンとして実行されており、ネットワークポートを聴きます。顧客がそれを要求すると、顧客に応答するためのサービスプロセスを開始し、同時にサービスポート自体を聴き続け、後の顧客もタイムリーにサービスを受けることができます。
2。2種類の伝送プロトコル:TCP/UDP
TCPは、信頼できる伝送を保証する接続指向プロトコルである転送制御プロトコルの略語です。 TCPプロトコルを介した送信は、エラーのないデータストリームの順序になります。 TCPプロトコルに基づいて通信するには、送信者と受信機の2つのペアの間に接続を確立する必要があります。 1つのソケット(通常はサーバーソケット)が接続の確立を待っている場合、もう1つのソケットには接続が必要になります。これらの2つのソケットが接続されると、双方向のデータ送信を実行でき、両当事者は送信または受信操作を実行できます。
UDPは、ユーザーデータグラムプロトコルの略語です。それはコネクションレスプロトコルです。各データグラムは、完全なソースまたは宛先アドレスを含む独立した情報です。可能なパスによってネットワーク上の宛先に送信されます。したがって、目的地に到達できるかどうか、目的地に到達する時間、コンテンツの正しさを保証することはできません。
比較する:
UDP:
1.各データグラムは完全なアドレス情報を提供するため、送信者と受信機の間に接続を確立する必要はありません。
2. DPがデータを送信する場合、サイズ制限があり、送信された各データグラムは64kbに制限する必要があります。
3。DPは信頼性の低いプロトコルであり、送信者が送信したデータグラムは必ずしも同じ順序で受信機に到着するわけではありません。
TCP:
1。接続プロトコルに接続するには、ソケット間のデータ送信の前に接続を確立する必要があるため、TCPで接続時間が必要です。
2。CP伝送データサイズの制限。接続が確立されると、両当事者のソケットは統一された形式で大規模なデータを送信できます。
3.CPは、受信者が送信者から送信されたすべてのデータを完全に正しく取得できるようにする信頼できるプロトコルです。
応用:
1。TCPは、ネットワーク通信において非常に強い活力を持っています。たとえば、リモート接続(Telnet)とファイル転送(FTP)には、さまざまな長さのデータを確実に送信する必要があります。ただし、信頼できるトランスミッションにはコストがかかります。データコンテンツの正しさの検証は、コンピューターの処理時間とネットワーク帯域幅を必然的に占有します。したがって、TCP伝送の効率はUDPの効率ほど高くありません。
2。UDPは操作が簡単で、監督のみが少ないため、通常はLANの信頼性が高い分散システムのクライアント/サーバーアプリケーションで使用されます。たとえば、ビデオ会議システムでは、一貫性が保証されている限り、オーディオおよびビデオデータの絶対的な正しさを必要としません。この場合、UDPを使用する方が明らかに合理的です。
3。ソケットベースのJavaネットワークプログラミング
1。ソケットですか
ネットワーク上の2つのプログラムは、双方向通信接続を通じてデータ交換を実現します。この双方向リンクの一方の端は、ソケットと呼ばれます。ソケットは通常、顧客とサービスプロバイダー間で接続するために使用されます。 Socketは、TCP/IPプロトコルの非常に人気のあるプログラミングインターフェイスです。ソケットは、IPアドレスとポート番号によって一意に決定されます。
ただし、ソケットでサポートされるプロトコルのタイプはTCP/IPであるだけではないため、2つの間に必要な接続はありません。 Java環境では、ソケットプログラミングとは、主にTCP/IPプロトコルに基づくネットワークプログラミングを指します。
2。OCKET通信のプロセス
サーバー側は、特定のポートに接続リクエストがあるかどうかを聞きます(耳を傾けます)。クライアント側は、サーバー側への接続要求を発行し、サーバー側はクライアント側に受け入れメッセージを送り返します。接続が確立されます。サーバー側とクライアント側の両方は、送信、書き込み、その他の方法を通じて相互に通信できます。
完全に機能するソケットの場合、次の基本構造を含める必要があり、その作業プロセスには次の4つの基本的な手順が含まれます。
(1)ソケットを作成します。
(2)ソケットに接続された入力/アウトフローを開きます。
(3)特定のプロトコルに従ってソケットの読み取り/書き込み。
(4)ソケットを閉じます。
3.ソケットをビルドします
ソケットを作成します
Javaは、双方向接続のためにクライアントとサーバーを表すために使用されるパッケージJava.netで2つのクラスのソケットとサーバーソケットを提供します。これらは非常にパッケージ化された2つのクラスで、非常に使いやすいクラスです。建設方法は次のとおりです。
Socket(InetAddressアドレス、INTポート);
ソケット(InetAddressアドレス、INTポート、ブールストリーム);
Socket(String Host、Int Prot);
Socket(String Host、Int Prot、Boolean Stream);
Socket(SocketImpl Impl)
Socket(String Host、Int Port、InetAddress localAddr、int localport)
Socket(InetAddressアドレス、int port、inetAddress localaddr、int localport)
Serversocket(int port);
Serversocket(int port、intバックログ);
Serversocket(int port、int Backlog、inetAddress bindaddr)
アドレス、ホスト、ポートは、それぞれ双方向接続におけるIPアドレス、ホスト名、およびポート番号です。ストリームは、ソケットがストリームソケットかデータグラムソケットかを示します。ローカルポートは、ローカルホストのポート番号を示します。 LocalAddrとBindaddrは、ローカルマシン(Serversocketのホストアドレス)のアドレスです。 emplはソケットの親クラスです。 Serversocketを作成してソケットを作成するために使用できます。カウントは、サーバーがサポートできる接続の最大数を表します。例えば:
ソケットクライアント= new Socket( "127.0.0.1"、8888);
Serversocket Server = new Serversocket(8888);
ポートを選択するときは注意する必要があることに注意してください。各ポートは特定のサービスを提供します。正しいポートを提供することによってのみ、対応するサービスを取得できます。 0〜1023のポート番号は、システムによって予約されています。たとえば、HTTPサービスのポート番号は80、Telnetサービスのポート番号は21、FTPサービスのポート番号は23です。したがって、ポート番号を選択すると、競合を防ぐために1023を超える数字を選択するのが最善です。
ソケットを作成するときにエラーが発生した場合、IOExceptionが生成され、プログラムで処理する必要があります。したがって、ソケットまたはサーバーソケットを作成するときは、例外をキャッチまたはスローする必要があります。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。