1. 개요
소켓 클래스는 Java가 클라이언트 TCP 작업을 수행하는 기본 클래스입니다. 이 클래스 자체는 코드를 사용하여 호스트 운영 체제의 로컬 TCP 스택을 통해 통신합니다. 소켓 클래스 방법은 연결을 설정하고 파괴하고 다양한 소켓 옵션을 설정합니다.
Serversocket 클래스는 Java가 서버 측 작업을 수행하기위한 기본 클래스입니다. 이 클래스는 서버에서 실행되며 인바운드 TCP 연결에 대해서는 청취합니다. 각 소켓 서버는 서버의 포트에 대해 장려합니다. 원격 호스트의 클라이언트 가이 포트에 연결하려고 할 때 서버가 깨어나 두 호스트 사이의 소켓을 나타내는 일반 소켓 객체를 반환합니다.
2. TCP 란 무엇입니까?
TCP는 연결 지향적이고 신뢰할 수있는 바이트 스트림 기반 전송 계층 통신 프로토콜입니다. TCP 통신은 클라이언트 및 서버로 나뉘며 해당 객체는 각각 소켓 및 서버 소켓입니다.
컴퓨터가 다른 원격 컴퓨터에 연결 해야하는 경우 TCP 프로토콜을 사용하면 연결을 설정할 수 있습니다. 데이터를 전송 및 수신하기위한 가상 링크입니다. TCP 프로토콜은 정보 패킷을 수집하여 적절한 순서로 전송 한 다음 수신 종료에서 수신 한 후 올바르게 되돌아갑니다. 전송 중에 데이터 패킷이 정확한지 확인하기 위해 TCP는 재전송 메커니즘을 사용합니다. 커뮤니케이션 엔티티가 다른 커뮤니케이션 엔티티에 메시지를 보내면 다른 엔티티의 확인 정보를 수신해야합니다. 확인 정보가 접수되지 않으면 지금 전송 된 정보가 다시 분개됩니다.
III. TCP 커뮤니케이션
1. 생성자
소켓 클래스는 클라이언트 소켓을 구현하고 생성자는 연결하려는 호스트와 포트를 지정할 수 있습니다. 호스트는 inetAddress 또는 String으로 지정할 수 있으며 포트는 항상 0과 65535 사이의 int 값으로 지정됩니다.
소켓 S = 새로운 소켓 ( "127.0.0.1", 10001); // 스트림 소켓을 만들고 지정된 호스트의 지정된 포트 번호에 연결
서버 소켓 클래스는 서버 소켓을 구현합니다. 서버 소켓은 요청이 네트워크를 통해 전달 될 때까지 기다렸다가 요청에 따라 일부 작업을 수행 한 다음 결과를 요청자에게 반환합니다.
serversocket ss = new Serversocket (10001); // 특정 포트에 바인딩 된 서버 소켓 생성
예 : TCP 파일 복사
고객:
public class clientDemo {public static void main (String [] args)은 미지의 hostException, ioException {소켓 s = 새로운 소켓 ( "127.0.0.1", 10004); BufferedReader buf = new bufferedreader ( "c : //users//administrator//desktop//1.txt"); line = null;/*printwriter out = new printwriter (s.getoutputStream (), true); while ((line = buf.readline ())! = null) {out.println (line); } */bufferedWriter out = new BufferedWriter (new outputStreamWriter (s.getoutOutStream ())); while ((line = buf.readline ())! = null) {out.write (line); out.newline (); out.flush ();} s.shutdownoutput (); new bufferedReader (new inputStreamReader (s.getInputStream ()); String str = in.readline (); system.out.println (str); s.close (); buf.close ();}}서버 측 :
public class serverdemo {public static void main (string [] args)은 ioexception {werversocket ss = new serversocket (10004); socket s = ss.accept (); new bufferedReader in = new inputStreamReader (s.getInputStream ()); new PrintWriter (new printwriter; new PrintWriter; filewriter ( "c : //users//administrator//desktop//2.txt"), true); while ((line = in.readline ())! = null) {buf.println (line); }*/bufferedwriter buf = new BufferedWriter (새로운 filewriter ( "c : //users//administrator//desktop//2.txt"); printwriter (s.getoutputStream (), true); out.println ( "송환 성공!"); ss.close (); buf.close ();}}4. 브라우징에 대한 소켓의 응용 프로그램
서버 쪽을 Eclipse에 작성한 다음 브라우저를 사용하여 액세스 할 수 있습니다.
예를 들어 서버 측 코드는 다음과 같습니다.
public class socketserver {public static void main (String [] args)은 ioexception {serversocket server = new Serversocket (11000); Socket Client = Server.Accept (); printwriter out = new printwriter (client.getoutPutStream (), true); out.println ( "안녕하세요!"); Server.Close (); }}IE 브라우저를 열고 주소에 http://192.168.1.120:11000/을 입력하고 결과는 다음과 같습니다.
일반적인 응용 프로그램에서 브라우저는 Tomacat 서버에 요청을 발행하여 웹 페이지 이미지와 같은 리소스를 얻습니다. Tomca는 Java로 작성된 서버 측 소프트웨어입니다.
이제 서버 쪽을 다음과 같이 씁니다.
public class socketserver {public static void main (String [] args)은 ioexception {serversocket server = new Serversocket (11000); Socket Client = Server.Accept (); printwriter out = new printwriter (client.getoutPutStream (), true); bufferedReader in = new bufferedReader (new inputStreamReader (client.getInputStream ())); 문자열 라인 = null; while ((line = in.readline ())! = null) system.out.println (line); out.println ( "안녕하세요!"); Server.Close (); }}그런 다음 브라우저로 액세스 할 때 브라우저 (클라이언트)가 서버에 전송하는 요청 헤더 데이터가 다음과 같습니다.
위의 원리를 사용하여 IE와 유사한 브라우저 측 (클라이언트) 소프트웨어를 작성할 수 있습니다. 먼저 Demo.html 리소스를 Tomcat의 설치 디렉토리 C : /apache-tomcat-7.0.62/webapps/myweb에 추가 한 다음 클라이언트를 작성하십시오. 코드는 다음과 같습니다.
public class clientDemo {public static void main (String [] args)은 알 수없는 hostException, ioException {소켓 s = new Socket ( "192.168.1.120", 8080); printwriter out = new PrintWriter (s.getoutOutputStream (), true. http/1.1 "); out.println ("수락 :*/*"); out.println ("host : 192.168.120:11000");out.println("crintln("crintln("cinnection : keep-alive "); // 빈 줄을 출력합니다. inputStreamReader (s.getInputStream ()); String line = null; // 서버의 응답 파일을 반환합니다 ((line = in.Readline ())! = null) {system.out.println (line);} s.close ();}}다음으로 Tomcat을 시작합니다. 즉, startup.bat 파일을 c : /apache-tomcat-7.0.62/bin에서 두 번 클릭하십시오. 그런 다음 위의 클라이언트 코드를 실행하면 Tomacat이 반환 한 응답 데이터를 볼 수 있습니다.
요약
위의 것은 Java Network 프로그래밍에 관한이 기사의 TCP 커뮤니케이션의 완전한 코드 예제이며, 모든 사람에게 도움이되기를 바랍니다. 관심있는 친구들은이 사이트를 계속 참조 할 수 있습니다.
Java 네트워크 프로그래밍의 기본 사항 : 일방 통신
Java Multithreaded 프로그래밍에서 소켓 통신 구현을위한 샘플 코드
스레드 커뮤니케이션 코드에 대한 자세한 설명 소비자 모델 및 Java Multi-Shreaded의 대기 웨이크 업 메커니즘
단점이 있으면 메시지를 남겨 두십시오. 이 사이트를 지원해 주신 친구들에게 감사드립니다!