// ローカルホスト名と IP アドレスを返します。
InetAddress i = InetAddress.getLocalHost();
i.getHostAddress();//IP
i.getAddress();//???
// コンピューター名からコンピューター関連の情報を取得します。
InetAddress i = InetAddress.getByName("リビングストン-PC");
//ドメイン名からホスト関連の情報を取得します
InetAddress ibaidu = InetAddress.getByName("www.baidu.com");
URL url = 新しい URL("http://localhost:8080/demo.html");
url.getHost();
ソケット(クライアント):
オブジェクトが確立されると、指定されたホストに接続できます。TCP は接続指向であるため、ソケット サービスを確立するときにサーバーが存在する必要があり、接続が確立された後、チャネル上でデータ送信が実行されます。 ;
// クライアントのソケット サービスを作成し、ターゲット ホストとポートを指定します。
ソケット s = new Socket("cj-PC", 10003);
// データを送信するには、ソケット ストリームの出力ストリームを取得する必要があります。
OutputStream out = s.getOutputStream();
//PrintWriter out = new PrintWriter(s.getOutputStream(),true);out.println("Hello");
out.write("hello".getBytes());
// 返信メッセージを受信する
入力ストリーム = s.getInputStream();
byte[] bufIn = 新しいバイト[1024];
int num = in.read(bufIn);
System.out.println(new String(bufIn, 0, num));
s.close();// のストリーム オブジェクトはソケットにカプセル化され、ストリーム オブジェクトを自動的に閉じます。
ServerSocket (サーバー):
サーバー側ソケット サービス ServerSocket を確立し、ポートをリッスンします。
オブジェクトの accept メソッドを通じて接続されたクライアント オブジェクトを取得します。接続がない場合は待機します (ブロックします)。
クライアントがデータを送信する場合、サーバーは対応するクライアント オブジェクトの読み取りストリームを使用して、クライアントから送信されたデータを取得する必要があります。
ServerSocket ss = 新しい ServerSocket(10003);
//ServerSocket(int port,int backlog); は接続の最大数です。
ソケット s = ss.accept();
入力ストリーム = s.getInputStream();
byte[] buf = 新しいバイト[2014];
int len = in.read(buf);
文字列rec = 新しい文字列(buf, 0, len);
System.out.println(rec);
// メッセージを送り返す
OutputStream out = s.getOutputStream();
out.write("受信".getBytes());
s.close();//サーバーは自動的にクライアントを閉じます。
(1)クライアント:
ソケット サービスを確立し、接続先のホストとポートを指定します。
ソケット ストリームで出力ストリームを取得し、データをストリームに書き込み、ネットワーク経由でサーバーに送信します。
ソケット ストリームで入力ストリームを取得し、サーバーからフィードバックされたデータを取得して、クライアント リソースを閉じます。
DatagramSocket: UDP 送信を通じてテキスト データを送信します。
送信:
//udp サービスを作成し、DatagramSocket オブジェクトを作成して製品番号を指定します。
DatagramSocket ソケット = 新しい DatagramSocket(8888);
// データを決定し、それをデータ パケット DatagramPacket にカプセル化します (宛先マシンのポート番号を指定する必要があります)。
byte[] buf = "udp 行きます".getBytes();
DatagramPacket dp = new DatagramPacket(buf, buf.length,
InetAddress.getByName("マシン名"), 10086);
// 送信;
ソケット.send(dp);
// クロージャー;
ソケット.クローズ();
受け取る:
//udpsocket サービスを定義します。通常はポートが監視され、実際には受信側ネットワーク アプリケーションのデジタル ID が定義されます。
DatagramSocket ソケット = 新しい DatagramSocket(10086);
while (true) { //目的は継続的に監視することです
byte[] buf = 新しいバイト[1024];
// データを保存するためのデータ パッケージを定義します。
DatagramPacket dp = 新しい DatagramPacket(buf, buf.length);
// サービスの受信メソッドを通じて、受信したデータをデータ パケットに格納します。
socket.receive(dp);//ブロッキングメソッド。データがない場合はここでスタックします。
// データパケット方式でデータを取得します。
文字列 ip = dp.getAddress().getHostAddress();
文字列データ = new String(dp.getData(), 0, dp.getLength());
int ポート = dp.getPort();
}
ソケット s = new Socket("マシン名", 10005);
OutputStream out = s.getOutputStream();
FileInputStream fis = new FileInputStream("awf.jpg");
byte[] buf = 新しいバイト[1024];
int len = 0;
while ((len = fis.read(buf)) != -1) {
out.write(buf, 0, len);
}
// データの送信を停止します
s.shutdownOutput();
ServerSocket ss = new ServerSocket(10005); //ss.accept() メソッドにはブロック効果があります。
// accept() メソッドで取得した Socket ごとに別個のスレッドを作成できます。