> Java > java지도 시간 > 본문

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

零下一度
풀어 주다: 2017-07-24 09:22:52
원래의
1785명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!