記事のディレクトリ
ヒント:以下はこの記事の内容です。以下のケースは参照用です。
1. TCPネットワークプログラミングとは何ですか?
TCPネットワークプログラミングとは、Socketクラスを使用して通信プログラムを作成することを指します。
TCPプロトコルを使用して通信するプログラムは、プライマリとセカンダリです。1つはサーバー側プログラムと呼ばれ、もう1つはクライアント側プログラムと呼ばれます。
2. TCPネットワークプログラミングの原則:
1.アイコン:
2.クライアント側とサーバー側の分析:
Socketの本質は、データをI / Oストリームに抽象化し、ネットワーク間でデータ
ソケットを送信することです。これは、2台のマシン間の通信のエンドポイントです。
サーバー側:クライアントにデータを書き込むことができ、クライアントクライアントから送信されたデータを読み取ることができ
ます:サーバーから送信されたデータを読み取ることができ、サーバーにデータを書き込むことができます
ツールを使用し:
サーバー側:ServerSocketのは、
オブジェクトを作成します:ServerSocketを(int型ポート)
このメソッドは、特定のポートにバインドされたサーバソケットを作成します。
パラメータポートはポート番号で、 0〜1024で割っ自分で定義され、インストールされたソフトウェアデフォルトで占有されているポート番号以外のポート番号
callメソッド:Socket(戻り値タイプ)accept()
このメソッドは、このソケットの接続をリッスンして受信します
クライアント:ソケット
作成オブジェクト:Socket(String host、int port)
パラメーターhostはIPアドレス、portはポート番号です。
このメソッドはストリームソケットを作成し、指定されたホストのポート番号に接続します。
呼び出し方法: InputStreamクラスgetInputStream()メソッド
このメソッドは、このソケット
の入力ストリームを返すことができますOutputStreamクラスのgetOutputStream()メソッド
このメソッドは、このソケットの出力ストリームを返すことができます
3. DOSウィンドウを使用して自分のIPアドレスを確認する方法:
①cmd管理者ウィンドウを開きます
win + rキーを押してコマンドウィンドウをすばやく起動し、cmdと入力して管理者インターフェイスを開きます
②コマンドを入力してIPアドレスを表示します
ipconfigコマンドを入力して、マシンのアドレス情報を取得します。IPv4はマシンのIPアドレスです。
3.ネットワーク通信のケーステスト:
1.サーバー側クラス:
package dreamfly.net.server;
//读取客户端发来的数据,给客户端写出数据
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server {
public static void main(String[] args) throws IOException {
//1.开启服务器,参数是指开着的端口号
ServerSocket server = new ServerSocket(8899);
System.out.println("服务器已成功启动");
//2.接收客户端发来的连接
Socket socket = server.accept();
System.out.println("接收到客户端发来的请求");
//3.获取读取流
InputStream in = socket.getInputStream();
//4.读取数据
// int data = in.read(); //默认返回的是整数
for (int i = 0;i < 5;i++){
char data = (char)in.read();
System.out.print(data);
}
//5.给客户端写出数据
System.out.println();
OutputStream out = socket.getOutputStream();
out.write("world".getBytes());
System.out.println("服务器端成功发送数据");
out.close();
}
}
IOExceptionメソッドで最初にスローされたときに実行するか、try / catchステートメントブロックで囲まれたステートメント例外が発生する可能性があります。最初のスローIOExceptionを選択した後、サーバー側クラスの出力ステートメントは、成功したかどうかを検出することです。データを送信します。出力ステートメントは実行されません。これは、データが正常に送信されなかったことを意味します。
2.クライアントクラス:
package dreamfly.net.client;
//读取服务器端发来的数据,给服务器端写出数据
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class Client {
public static void main(String[] args) throws IOException {
//1.连接到指定的服务器(ip+port)
Socket socket = new Socket("127.0.0.1",8899);
System.out.println("已连接成功");
//2.获取写出流
OutputStream out = socket.getOutputStream();
//3.写出数据,字节流只能写出整数或字节数组
//将hello对应整数编程对应的字节数组,getBytes()将String转换为byte[]
out.write("hello".getBytes());
System.out.println("客户端成功发送数据");
InputStream in = socket.getInputStream();
for (int i = 0;i < 5;i++){
char data = (char)in.read();
System.out.print(data);
}
System.out.println();
System.out.println("成功接收服务器端数据");
out.close();
}
}
4.操作結果:
1.サーバーの電源を入れます
2.クライアントを開きます
サーバー側の実行結果:
クライアントの実行結果:
3.注意が必要な事項:
操作の順序は次のとおりです。最初にサーバーを開き、次にクライアントを実行します
。OutStreamバイトストリームは整数またはバイト配列のみを書き込むことができます。文字列データを送信するには、getBytes()メソッドを使用して文字列データをbyte []バイト配列に変換します。
サーバーの電源をオンにせずにクライアントの電源をオンにすると、次の操作結果が得られます。
理由:サーバーのポート番号が開かれていないため、クライアントはサーバーの対応するポートに接続できません。
五数要約
上記はJavaでの単純なネットワーク通信の内容であり、APIでこの記事で使用されているクラスの説明が添付されています。