ホームページ  >  記事  >  Java  >  Javaネットワークプログラミング例の詳細な説明

Javaネットワークプログラミング例の詳細な説明

零下一度
零下一度オリジナル
2017-07-24 09:22:521790ブラウズ

1. ソケット Socket

ネットワークドライバーは、アプリケーションプログラミングのためのインターフェースとメカニズムを提供します。これは、アプリケーションがここに商品を置くだけで、商品の配送を完了します。これはアプリケーション内で作成され、バインド メカニズムを通じてドライバーとの関係を確立し、対応する IP とポートを自分自身に伝えます。

Socket は Java のネットワーク プログラミング クラスで、java.net パッケージにあります。

---- DatagramSocket // UDP 通信に使用されます

---- ServerSocket // TCP 通信に使用され、サーバーに使用されます

---- Socket // TCP 通信のサーバーとクライアントに使用されます Duan u 2、UDP ネットワーク プログラム

ineTaddress クラスは相互接続プロトコル (IP) アドレスを表します

// Static INetaddress GetLocalHost () Throws UnknownHostException AME (String Host) は指定されたホストです ホストの IP アドレスを決定します。 ホスト名はマシン名 (「java.sun.com」など)、またはその IP アドレスのテキスト表現にすることができます

//static InetAddress[] getAllByName(String host) はホスト名に基づいて IP アドレスを返しますで構成される配列。

static void ipDemo() throws UnknownHostException{
                InetAddress netAddr=InetAddress.getLocalHost();                //取得本地电脑的一些信息System.out.println(netAddr.toString());  
                System.out.println(netAddr.getHostAddress());
                System.out.println(netAddr.getHostName()); //取得其他电脑的信息InetAddress netAddr2=InetAddress.getByName("DELL-PC");  //这里也可以传IP地址System.out.println(netAddr2.getHostAddress());  //169.254.170.71System.out.println(netAddr2.getHostName()); //DELL-PC                //取得百度的地址InetAddress []  ipList=InetAddress.getAllByName("www.baidu.com");for(InetAddress addr:ipList){
                    System.out.println(addr.toString()); 
                }
            }


3. UDPによるDatagramSocket、DatagramPacketの送受信

//例1 最も単純な送受信

送信end==java.netパッケージをインポートするにはUDP経由でデータを送信する:

1) UDPSocket サービスを確立します

2) データを提供し、データをデータパケットにカプセル化します DatagramPacket (byte[] buf, int length, InetAddress address, int port) //複数のコンストラクターがあります

3) Socket サービスを渡し、データを送信します

4) リソースを閉じる

import java.net.*;class Sender4{//DatagramPacket (byte[] buf, int length, InetAddress address, int port) public static void main(String [] args) throws Exception
                                {                                      byte [] buff="hello cat".getBytes(); 
                                        DatagramSocket socket=new DatagramSocket();
                                        DatagramPacket packet=new DatagramPacket(buff,buff.length,InetAddress.getByName("192.168.0.103"),8888);
                                        socket.send(packet);
                                        socket.close();
                                        System.out.println("ok");
                                }
                            }

--受信終了

1) ソケットサービスを作成し、特定のポートでリッスンするように指定します

2) データを受信するためのDatagramPacketを作成します

3 ) パッケージからデータを取得します

4) リソースを閉じる

import java.net.*;class Receive4
                            {public static void main(String [] args) throws Exception
                                {
                                DatagramSocket socket=new DatagramSocket(8888); //别忘了端口号byte[] buff=new byte[1024] ;
                                    DatagramPacket packet=new DatagramPacket(buff,buff.length);
                                    
                                    socket.receive(packet);
                                    
                                    String senderIp=packet.getAddress().getHostAddress();
                                    String senderData=new String(packet.getData(),0,packet.getLength());int senderPort=packet.getPort();
                                    System.out.println(senderIp+"---"+senderData+"---"+senderPort);
                                    
                                    socket.close();
                                }
                            }

//例 2、周期的な送受信
import java.net.*;import java.io.*;class NewSender{public static void main(String [] args) throws Exception
                        {
                                System.out.println("发送端启动了");
                                DatagramSocket socket=new DatagramSocket();
                                
                                BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); //包装键盘输入流String str=null;while((str=br.readLine())!=null){byte [] buff=str.getBytes();
                                        DatagramPacket packet=new DatagramPacket(buff,buff.length,InetAddress.getByName("127.0.0.1"),9000);
                                        socket.send(packet);
                                }
                                
                                br.close();
                                socket.close();            
                        }    
                    }

import java.net.*;class NewReceiver{public static void main(String [] args) throws Exception
                    {
                            DatagramSocket socket=new DatagramSocket(9000);
                            System.out.println("接收端启动了");                            while(true){ 
                                  byte [] buff=new byte[1024] ; 
                                  DatagramPacket packet=new DatagramPacket(buff,buff.length);
                                  socket.receive(packet);
                                  
                                  String senderIp=packet.getAddress().getHostAddress();                                  int sendPort=packet.getPort();
                                  String msg= new String(packet.getData(),0,packet.getLength());
                                  
                                  System.out.println(senderIp+":"+sendPort+":"+msg);    
                            }
                    }
                }

例 3: マルチスレッドのチャット ルーム プログラム

りー

りー

りー

以上がJavaネットワークプログラミング例の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。