현재 위치 - 법률 상담 무료 플랫폼 - 특허 조회 - 자바 비동기 네트워크 프로그래밍
자바 비동기 네트워크 프로그래밍
이 문서는 클라이언트 서버 응용 프로그램을 작성하는 Java 프로그래머에게 도움이 되며, 상대방에 장애가 발생해도 프로그램이 계속 안정적으로 실행되는 문제를 해결할 수 있습니다. 현재 Java 플랫폼은 다양한 고객/서버 시스템의 실제 프로그래밍에 널리 사용되고 있으며 클라이언트 프로그램과 같은 네트워크를 비동기적으로 처리해야 하는 경우가 많습니다. 클라이언트 프로그램이 서비스 프로그램보다 먼저 실행되는 경우 클라이언트 프로그램은 서비스 프로그램이 시작된 후 서비스 프로그램에 자동으로 연결해야 합니다. 클라이언트 프로그램 도중에 서비스 프로그램이 중지되면 서비스 프로그램이 실행되고 중지되지 않고 다시 연결될 때까지 기다려야 합니다. 다음은 비동기 프로그래밍 방법입니다.

네트워크 비동기 응용 프로그램에는 다음과 같은 몇 가지 핵심 사항이 포함됩니다.

◇ 클라이언트 응용 프로그램이 시작된 후 서비스 응용 프로그램이 있는지 확인합니다. 존재하지 않을 경우 클라이언트 애플리케이션의 다른 작업을 차단하지 않고 서비스 애플리케이션이 시작될 때까지 기다리십시오. 서비스 응용 프로그램이 시작되면 클라이언트 응용 프로그램이 적시에 연결해야 합니다. 데이터 통신에서 서비스 애플리케이션이 비정상적으로 종료된 후 클라이언트 애플리케이션은 서비스 애플리케이션의 종료를 감지할 수 있어야 하며 클라이언트 애플리케이션은 통신 링크를 자동으로 비우고 서비스 애플리케이션이 재시작될 때까지 초기 상태로 돌아갑니다.

네트워크의 비동기 프로그래밍은 먼저 타이머와 타이머 이벤트를 포함한다. 타이머는 네트워크에서 클라이언트 응용 프로그램과 서비스 응용 프로그램이 연결되어 있는지 여부를 지속적으로 감지하는 데 사용되며, 서비스 응용 프로그램에 예외가 발생할 경우 데이터 통신을 중지하고 초기 상태로 돌아갑니다. 네트워크 방법의 예외 처리를 통해 네트워크 오류를 알 수 있습니다.

타이머는 네트워크 통신 클래스에 포함되어 있어 해당 클래스를 사용하는 응용 프로그램이 타이머의 존재를 인식하지 못하고 네트워크 정보를 쉽게 처리할 수 없습니다.

클라이언트 프로그램 클래스는 공용 클래스 NetComm? ActionListener{? Javax swing timer timer = new javax swing timer (this); -응? 콘센트 양말 개인 이벤트 알림 프로그램 en; Public static int net _ state =;; Inet address serveraddrint server port? Public netcomm (inet address addr intport) {? ServerAddr = addr? 서버 포트? = 포트; }

Public void NetComm_Init() {? Net _ state =;; -응? 시도 {? Sock = new socket (server addr server port); -응? } catch (IOException e) {? Net _ state =;; -응? }? 타이머 시작 (); }? Public void NetComm_Data(){? 시도 {? Outputstream outputstream = sock get outputstream (); Buffered writer out = new buffered writer? (new output streamwriter (output stream)); Out write (Java by ghf @ China); -응? Outflush ();

-응? BufferedReader in = 새로운 BufferedReader? (newinputstreamreader (sockgetinputstream ()); 부울 모어 = 참? While (더) {? Stringstr = inreadline (); -응? If (str = = null) more = false; -응? 그렇지 않으면요? //데이터 처리? 시스템 출력 println (str); -응? } inclose ();

-응? } catch (IOException e) {? Netcomm _ close (); -응? Net _ state =;; -응? }? 타이머 시작 (); -응? } public void NetComm_Close ()? {? 만약 (양말! = null)? 시도 {? 양말 클로즈 (); -응? } catch (IOException e) {? }? } public void action performed (actionevent e)? {? If(net_state ==)? Netcomm _ init (); -응? 그렇지 않으면요? Netcomm _ data (); -응? }}

위 프로그램에서 외부 응용 프로그램에 콜백 함수를 제공하여 응용 프로그램 서비스가 네트워크 예외 또는 정상 복구를 수행할 때 네트워크 통신 클래스를 동일한 클래스에 배치할 수 있음을 알릴 수도 있습니다.

Lishi Xinzhi/article/program/Java/hx/201311/27252