이 예제는 간단한 기능만을 보여 주며 코드는 엄격하지 않지만 클라이언트가 서버에 연결하는 간단한 코드를 구현할 수있는 방법 만 설명합니다.
코드는 아래 그림과 같이 통합식 이클립스 도구에서 컴파일 및 실행 환경을 테스트합니다.
클라이언트 echoclient.java 코드 :
package com.zhengzz.echo; import java.io.bufferedReader; import java.io.ioException; import java.io.inputStreamReader; import java.io.printwriter; import java.net.socket; import java.net.unknownhostexception; class echoc {private socket socket; IoExcept e) {e.printstacktrace ()} public void client () {bufferedReader br = new inputStreamReader (socket.getInputStream ()); true); 새로운 BufferedReader (system.in); println (br.readline ()); main (string [] args) {new echoc (). client ()};서버 echoserver.java 코드 :
package com.zhengzz.echo; import java.io.bufferedReader; import java.io.ioexception; import java.io.inputStreamReader; import java.io.printwriter; import java.net.serversocket; import java.net.socket; class echos {private serversocket; socket = system.out.println ( " + socket.getInetAddress () +": " + socket.getLocalport ()); ))); printwriter (socket.getoutputstream (), true; ( "--->" + linest)} catch (ioexception e) {system.out.println ( "연결 연결이 끊어졌습니다 : (");}}} public static void main (String [] ar gs) {new echos (). server ()};Eclipse 도구에서 직접 디버깅 결과는 다음과 같습니다.
Helloword 수준의 Java 소켓 커뮤니케이션의 예를 살펴 보겠습니다. 의사 소통 과정 :
먼저 서버 측을 시작하고 죽은 루프를 입력하여 특정 포트에 대한 연결 요청이 있는지 계속 들으십시오. 그런 다음 클라이언트 측면을 실행하면 클라이언트가 연결 요청을 발행하고 서버는 요청을 듣고 클라이언트에 수락 메시지를 보내고 스레드가 요청을 처리하기 시작한 다음 계속 듣습니다. 죽은 루프의 다른 요청에. 클라이언트가 문자열에 들어간 후 Enter를 눌러 서버로 데이터를 보냅니다. 서버는 데이터를 읽고 클라이언트 데이터에 응답합니다. 이번에 요청이 처리 된 후 시작된 스레드가 사라집니다. 클라이언트가 "OK"이외의 반환 데이터를 수신하면 연결 요청을 다시 보내고 데이터를 전송하고 서버가 연결을 위해 스레드를 다시 시작합니다. . . 클라이언트가 클라이언트가받은 반환 데이터가 "확인"될 때까지 종료됩니다.
서버 소스 코드 :
com.defond.socket.begin; 소켓; 공개 정적 최종 포트 = 12345; Server = Server.init (); void init () {werversocket = while (true); 클라이언트가 연결되어 있습니다. 소켓 클라이언트 = serversocket.accept (); ); datainputStream input = new DatainputStream (socket.getInputStream ()); // 클라이언트 출력 스트림의 해당 메소드에주의를 기울여야합니다. data system.out. println (클라이언트가 보낸 컨텐츠 : // 클라이언트 데이터에 대한 답장 = new DataOutputStream (socket.getOutputStream ()); "); // 키보드 문자열에 입력 한 줄을 보냅니다. } catch (exce e) {System .out.println ( "서버 run Exception :" + e.getMessage ()); e) {socket = null;클라이언트 소스 코드 :
com.defond.socket.begin; 소켓; 공개 클래스 클라이언트 {public static final string ip_addr = "로컬 호스트"; // 서버 주소 공개 정적 최종 int 포트 = 12345; ( "클라이언트 시작 ..."; System.out.println ( "OK /"가 수신되면 클라이언트가 종료됩니다 {// 스트림 소켓을 생성하고 지정된 호스트 소켓의 지정된 포트 번호에 연결합니다. // 서버에 데이터를 보내십시오 DataOutputStream out = Socket.getOutputStream ()) ( "입력 : /t"); readline (); ont.writeutf (str); input.out.out.println; ".equals (ret)) {System.out.println ("클라이언트는 연결을 닫습니다 "); thread.sleep (500); break;} out.close (); input.close ();} catch (예외 E ) {system.out.println ( "클라이언트 예외 :" + e.getMessage ()); ;참고 : 소켓 출력 스트림이 데이터 메소드를 쓰는 경우 입력 스트림은 readUTF를 사용하여 관련 데이터를 읽어야합니다. 그렇지 않으면 eofexception 예외가 발생합니다.