네트워크 비동기 응용 프로그램에는 다음과 같은 몇 가지 핵심 사항이 포함됩니다.
◇ 클라이언트 응용 프로그램이 시작된 후 서비스 응용 프로그램이 있는지 확인합니다. 존재하지 않을 경우 클라이언트 애플리케이션의 다른 작업을 차단하지 않고 서비스 애플리케이션이 시작될 때까지 기다리십시오. 서비스 응용 프로그램이 시작되면 클라이언트 응용 프로그램이 적시에 연결해야 합니다. 데이터 통신에서 서비스 애플리케이션이 비정상적으로 종료된 후 클라이언트 애플리케이션은 서비스 애플리케이션의 종료를 감지할 수 있어야 하며 클라이언트 애플리케이션은 통신 링크를 자동으로 비우고 서비스 애플리케이션이 재시작될 때까지 초기 상태로 돌아갑니다.
네트워크의 비동기 프로그래밍은 먼저 타이머와 타이머 이벤트를 포함한다. 타이머는 네트워크에서 클라이언트 응용 프로그램과 서비스 응용 프로그램이 연결되어 있는지 여부를 지속적으로 감지하는 데 사용되며, 서비스 응용 프로그램에 예외가 발생할 경우 데이터 통신을 중지하고 초기 상태로 돌아갑니다. 네트워크 방법의 예외 처리를 통해 네트워크 오류를 알 수 있습니다.
타이머는 네트워크 통신 클래스에 포함되어 있어 해당 클래스를 사용하는 응용 프로그램이 타이머의 존재를 인식하지 못하고 네트워크 정보를 쉽게 처리할 수 없습니다.
클라이언트 프로그램 클래스는 공용 클래스 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