>  기사  >  Java  >  Java 네트워크 프로그래밍 예제에 대한 자세한 설명

Java 네트워크 프로그래밍 예제에 대한 자세한 설명

零下一度
零下一度원래의
2017-07-24 09:22:521747검색

1. 소켓 소켓

네트워크 드라이버는 애플리케이션 프로그래밍을 위한 인터페이스와 메커니즘을 제공하는데, 이는 애플리케이션이 여기에 상품을 넣으면 상품 배송이 완료됩니다. 애플리케이션에서 생성되고 바인딩 메커니즘을 통해 드라이버와의 관계를 설정하고 해당 IP 및 포트를 스스로 알려줍니다.

Socket은 java.net 패키지에 있는 Java의 네트워크 프로그래밍 클래스입니다.

---- DatagramSocket // UDP 통신에 사용

---- ServerSocket // TCP 통신에 사용, 서버에 사용

---- Socket // Tcp 통신의 서버 및 클라이언트에 사용 Duan u 2, UDP 네트워크 프로그램

ineTadDress 클래스는 상호 연결 프로토콜(IP) 주소를 나타냅니다.

// Static Inetddress GetLocalHost () Throws UNKNOWNHOSTEXCEPION ame(문자열 호스트)는 지정된 호스트입니다. 호스트의 IP 주소를 확인합니다. 호스트 이름은 시스템 이름(예: "java.sun.com")이거나 해당 IP 주소의 텍스트 표현일 수 있습니다.

//static InetAddress[] getAllByName(String 호스트)은 호스트 이름을 기반으로 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 가장 간단한 송수신

Sending end==java.net 패키지 가져오기UDP를 통해 데이터 보내기 :

1) UDPSocket 서비스 구축

2) 데이터 제공 및 데이터 패킷으로 데이터 캡슐화 DatagramPacket (byte[] buf, int length, InetAddress 주소, int 포트) //여러 생성자가 있습니다

3) Pass 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: 멀티스레드 채팅방 프로그램

class Chat
        {public static void main(String [] args)
                {new Thread(new SendThread()).start(); new Thread(new ReceiveThread()).start(); 
                }
        }

//发送端import java.io.*;import java.net.*;class SendThread implements Runnable
        {              private DatagramSocket socket;public void run()
                {try{
                        socket=new DatagramSocket();
                        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
                        String msg=null;while((msg=br.readLine())!=null){byte[] buff=msg.getBytes();
                            DatagramPacket packet=new DatagramPacket(buff,buff.length,InetAddress.getByName("127.0.0.1"),10000);
                            socket.send(packet);
                        }
                        
                        socket.close();
                        br.close();
                    }catch(Exception ex){
                        ex.printStackTrace();
                    }
                }
        }

//接收端import java.net.*;class ReceiveThread implements Runnable{    private DatagramSocket socket;                    public void run(){try{
                        socket=new DatagramSocket(10000);while(true){byte [] buff=new byte[1024];
                            DatagramPacket packet=new DatagramPacket(buff,buff.length);
                            socket.receive(packet);
                            
                            String senderIp=packet.getAddress().getHostAddress();int senderPort=packet.getPort();
                            String msg=new String(packet.getData(),0,packet.getLength());
                            
                            System.out.println(senderIp+":"+senderPort+":"+msg);
        
                        }
                    }catch(Exception ex)
                    {
                        System.out.println(ex.getMessage());
                    }
                }    
        }

위 내용은 Java 네트워크 프로그래밍 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.