Javaでネットワークプログラミング上の

Javaでネットワークプログラミング上の

1.基本

ネットワークは、これらのデバイスのデバイス(コンピュータ)の複数の上で実行するように書かれたプログラムは、ネットワークを介して接続されている手段をプログラミングします。

Javaではjava.netパッケージは、クラスおよびインタフェースが含まれています。彼らは、低レベルの通信の詳細を提供しています。我々は、具体的な問題に対処するために、これらのクラスやインタフェースを使用することができます。

インターネットの三つの基礎:URLのhtml HTTP

2つの一般的なネットワークプロトコルパッケージjava.netのサポートを提供します:

UDP :.頭字語のユーザーデータグラムプロトコルは、非接続指向、危険なプロトコルは、通常、以下60Kより単純な、小さなオーバーヘッド、高効率、限られたサイズであります

TCP:3ウェイハンドシェイクに基づく接続指向の、安全で、低効率:1、応答では、データ伝送接続を2ダイヤル3

2.UDP

1.UDP基本的なプロセス:送信側

使用DatagramSocketの指定ポート、送信元を作成します

準備データは、バイト配列に変換する必要があります

カプセル化されたパッケージのDatagramPacket

送信ラッピングセンド(のDatagramPacket p)を

リソースを解放

実施例1つの送信側:


        import java.net.DatagramPacket;
        import java.net.DatagramSocket;
        import java.net.InetSocketAddress;
        public class UDPSend1 {
        	public static void main(String[] args) throws Exception {
        		System.out.println("发送方启动中...");
        		// 1.使用DatagramSocket指定端口,创建发送端
        		DatagramSocket client = new DatagramSocket(6666);
        		// 2.准备数据 一定要转成字节数组
        		String data = "落霞与孤鹜齐飞,秋水共长天一色";
        		byte[] datas = data.getBytes();
        		// 3.封装成DatagramPacket包裹
        		DatagramPacket packet = new DatagramPacket(datas, 0, datas.length, new InetSocketAddress("localhost", 8888));
        		// 4.发送包裹send(DatagramPacket p)
        		client.send(packet);
        		// 5.释放资源
        		client.close();
        	}
        }
复制代码

2.UDP基本的なプロセス:受信側

使用DatagramSocketの指定ポートは、受信側を作成します

準備ができた容器、のDatagramPacketに包まれたパッケージ

ブロッキングは、パッケージが(のDatagramPacket p)とを受け取る受信します

データ分析

リソースを解放

実施例1の受信側:

        import java.net.DatagramPacket;
        import java.net.DatagramSocket;
        public class UDPReceive1 {
    	public static void main(String[] args) throws Exception {
    		System.out.println("接收端准备中.... ");
    		// 1.使用DatagramSocket指定端口,创建接收端
    		DatagramSocket server = new DatagramSocket(8888);
    		// 2.准备容器,封装成DatagramPacket包裹
    		byte[] container = new byte[1024 * 60];
    		DatagramPacket packet = new DatagramPacket(container, 0, container.length);
    		// 3.阻塞式接收包裹receive(DatagramPacket p)
    		server.receive(packet);
    		// 4.分析数据
    		byte[] datas = packet.getData();
    		int len = packet.getLength();
    		System.out.println(new String(datas, 0, len));
    		// 5.释放资源
    		server.close();
    	}
    }
复制代码

3.TCP

1.TCP基本的なプロセス:クライアント

指定されたホスト上の指定したポート番号にストリームソケットを作成するためのカスタム・クライアントソケットソケット(文字列のホスト、int型ポート)

データを準備します

IO操作を書きます

リソースを解放

クライアントの例2:


        import java.io.DataOutputStream;
        import java.io.IOException;
        import java.net.Socket;
        import java.net.UnknownHostException;
        public class Client01 {
    	public static void main(String[] args) throws UnknownHostException, IOException {
    		System.out.println("-------------Client-----------");
    		//1.定义客户端 Socket  Socket(String host, int port)
    		Socket client=new Socket("127.0.0.1",7777);
    		//2.准备数据
    		String str="name=zhangsan&pwd=123";
    		//3.写出  直接从管道中获取流
    		DataOutputStream data=new DataOutputStream(client.getOutputStream());
    		data.writeUTF(str);
    		data.flush();
    		//4.关闭
    		data.close();
    		client.close();
    	}
    }
复制代码

2.TCP基本的なプロセス:サーバー

定義されているサーバのServerSocketのServerSocket(int port)指定されたポートにバインドされたサーバソケットを作成します。

モニターをブロックすると、()を受け入れるソケット

接続ソケットを監視し、それを受け入れます

IO操作

リソースを解放

サーバー例2:

    import java.io.DataInputStream;
    import java.io.IOException;
    import java.net.ServerSocket;
    import java.net.Socket;
    public class Server01 {
    	public static void main(String[] args) throws IOException {
    		System.out.println("-------------Server-----------");
    		//1.定义服务端
    		ServerSocket server=new ServerSocket(7777);
    		//2.阻塞式监听  Socket accept() 
    		Socket client=server.accept();
    		//3.io操作,直接从管道中获得流
    		DataInputStream in=new DataInputStream( client.getInputStream());
    		String str=in.readUTF();
    		System.out.println(str);
    		//4.释放资源
    		in.close();
    		client.close();
    		server.close();
    	}
    }	
复制代码

おすすめ

転載: juejin.im/post/5dc4291be51d4558a646586e