1。基本的なネットワークの概念
まず、コンセプトを明確にします:ネットワークプログラミング! =ウェブサイトプログラミング、ネットワークプログラミングは一般にTCP/IPプログラミングと呼ばれています。
2。ネットワーク通信プロトコルとインターフェイス
3。通信プロトコル階層化のアイデア
4。参照モデル
V. IPプロトコル
全員のコンピューターには一意のIPアドレスがあるため、互いに通信するときにエラーメッセージが送信されません。
IPアドレスは、1つのドットで4つのセグメントに分割されます。コンピューター内のIPアドレスは、4バイトで表されます。 1つのバイトはセグメントを表し、各バイトで表される最大数は255にしか達しません。
vi。 TCPプロトコルとUDPプロトコル
TCPとUDPは同じレイヤーにあり、どちらもIPレイヤーに基づいています。 2つのコンピューターには異なるIPアドレスがあるため、2つのコンピューターを区別し、互いに話すことができます。通常、話すには2つの方法があります。1つ目はTCPで、2つ目はUDPです。 TCPは信頼できる接続です。 TCPは電話をかけるようなものです。最初に相手に電話して、相手と話を続ける前に相手が応答するのを待つ必要があります。つまり、メッセージを送信する前にメッセージを送信できることを確認する必要があります。 TCPは信頼できるものをアップロードします。 2つのマシンに接続が確立されている限り、マシンに送信されたデータは間違いなく相手のマシンに送信されます。 UDPは電報を送信するようなもので、送信された場合に行われます。相手がそれを受け取るかどうかは関係ないので、UDPは信頼できません。 TCPはデータを確実に送信しますが、ゆっくりと送信されます。 UDPは信頼できないデータを送信しますが、迅速に送信されます。
7。ソケットプログラミング
一般的に、ネットワークプログラミングはソケットプログラミングと呼ばれ、ソケットは英語で「ソケット」を意味します。
両方のコンピューターにソケットを取り付け、2つのコンピューターのソケットにケーブルの2つの端を差し込み、2つのコンピューターが接続を確立できるようにします。このソケットはソケットです。
彼らはお互いにコミュニケーションをとることができるので、私はあなたが私のサーバーであると言いましたが、論理的な意味で、私は最初にあなたに物を送るべきであり、それからあなたはそれらを処理して転送します。だからあなたはそれをサーバーと呼びます。しかし、技術的な意味では、TCPのみがサーバーとクライアントを分割します。 UDPの場合、厳密な意味では、いわゆるサーバーとクライアントはありません。 TCPサーバーのソケットはServersocketと呼ばれ、クライアントのソケットはソケットと呼ばれます。
2つのコンピューターが互いに接続されている場合、最初にIPアドレスを知る必要がありますが、IPアドレスのみを提供するだけでは十分ではありません。また、接続のポート番号、つまり接続するアプリケーションも必要です。
ポート番号は、マシン上のさまざまなアプリケーションを区別するために使用されます。ポート番号は、コンピューター内の2バイトを占めています。マシンには最大65536ポート番号があります。アプリケーションは複数のポート番号を占めることができます。ポート番号がアプリケーションで占有されている場合、他のアプリケーションはこのポート番号を使用できなくなります。書くプログラムがポート番号を占有する必要がある場合、1024を超えるポート番号を占有したい場合は、システムがいつでも要求される可能性があるため、1024未満のポート番号を占有しないでください。ポート番号自体は、TCPポートとUDPポートに分割されます。 TCPポート8888とUDPポート8888は、2つの完全に異なるポートです。 65536 TCPポートとUDPポートがあります。
8。TCPソケット通信モデル
9。ソケットの使用例
Serversocket
Import Java.net。 /* Serversocketオブジェクトを作成する場合、多くの場合、ポート番号が割り当てられます。意味は、新しいServersocketオブジェクトが使用するポート番号と、クライアントの接続を聞くためにどのポート番号を使用するかを使用することです。したがって、ポート番号を指定することの意味は、Serversocketオブジェクトがクライアントの接続に耳を傾ける場所をコンピューターに伝えることです。 */ *サーバー側はクライアントの接続要求を継続的に受信するため、サーバー側のプログラミングは一般にデッドループであり、無限に実行されます。 */ while(true){socket s = s.accept(); /*サーバー側のAccept()メソッドを呼び出して、クライアントの接続オブジェクトを受け入れます。 Accept()メソッドはブロッキングメソッドです。クライアントが接続を申請するかどうかを愚かに待っていました。次に、サーバー側のソケットソケットがクライアントのソケットソケットとの接続を確立します。 * / /*クライアントがサーバー側に接続できるかどうかは、サーバー側がクライアントの接続要求を受け入れるかどうかによって異なります。クライアントが接続要求を受け入れた場合、サーバー側にソケットソケットをインストールして、このソケットを介してクライアントとの接続を確立し、相互に通信します。 */ system.out.println( "Client Connected!"); /* inputstreamストリームを使用してクライアントから送信された情報を受信し、DatainputStreamデータストリームを使用して受信した情報を処理します*/ datainputStream dis = new DatainputStream(S.GetInputStream()); /* readutfを使用します(メソッドは受信したすべての情報を読み取り、可変strに保存してreadutf()メソッドもブロックメソッドです。クライアントが情報を送信するのを愚かに待ち、クライアントが何かを書いていない場合、クライアントは何かを書きます。他のクライアントがサーバーに接続したい場合は、次のループで()メソッドを呼び出す必要があります。情報はここでブロックされ、他のクライアントがサーバー側に接続できないようにします。クライアントソケット
import java.net。*; import java.io。*; public class testclientsocket {public static void main(string args [])throws exception {socket s = new Socket( "127.0.0.1"、6666); /*クライアントは、サーバー側に接続するように適用します* / /*サーバー側に接続した後、サーバー側に情報を出力してサーバー側から返された情報を受信し、情報出力情報を受信して返信情報を受信できます。ストリーム入力と出力の両方の原則を使用して情報を処理する必要があります*//*ここに、サーバー側への出力ストリーム出力ストリーム出力情報はあります*/ outputStream os = s.getOutputStream(); dataoutputStream dos = new DataOutputStream(OS); thread.sleep(30000);/*クライアントは30秒間スリープしてから、サーバーに情報を送信します*/ dos.writeutf( "hello server!"); }}クライアントはポート6666を介してサーバーへの接続を要求します。サーバーがクライアントの接続要求を受け入れた後、サーバーにソケットをインストールし、このソケットをクライアントのソケットに接続して、サーバーがクライアントと通信できるようにします。別のクライアントが接続を適用すると、サーバーがそれを受け入れると、クライアントのソケットに接続するために別のソケットがインストールされます。