1. 네트워크 프로그래밍의 두 가지 주요 문제
하나는 네트워크에서 하나 이상의 호스트를 정확하게 찾는 방법이고, 다른 하나는 호스트를 찾은 후 데이터를 안정적이고 효율적으로 전송하는 방법입니다.
TCP/IP 프로토콜에서 IP 계층은 주로 네트워크 호스트의 위치 및 데이터 전송 라우팅을 담당합니다. IP 주소는 인터넷에서 호스트를 독특하게 결정할 수 있습니다.
TCP 계층은 네트워크 프로그래밍의 주요 객체 인 응용 프로그램에 대한 신뢰할 수있는 (TCP) 또는 신뢰할 수없는 (UDP) 데이터 전송 메커니즘을 제공하며 일반적으로 IP 계층이 데이터를 처리하는 방법에 대해 신경 쓰지 않아도됩니다.
현재 가장 인기있는 네트워크 프로그래밍 모델은 클라이언트/서버 (C/S) 구조입니다. 즉, 커뮤니케이션 당사자 중 하나는 고객이 요청을 제출하고 응답 할 때까지 서버 역할을합니다. 서비스가 필요할 때 고객은 서버에 적용됩니다. 서버는 일반적으로 항상 네트워크 포트를 듣고 데몬으로 실행됩니다. 고객이 요청하면 고객에게 응답 할 수있는 서비스 프로세스를 시작하고 동시에 나중에 고객이 적시에 서비스를받을 수 있도록 서비스 포트 자체를 계속 듣습니다.
2. 전송 프로토콜의 두 가지 유형 : TCP/UDP
TCP는 신뢰할 수있는 전송을 보장하는 연결 지향 프로토콜 인 전송 제어 프로토콜의 약어입니다. TCP 프로토콜을 통한 전송은 오류가없는 데이터 스트림 순서를 초래합니다. TCP 프로토콜을 기반으로 통신하기 위해 발신자의 두 쌍의 소켓과 수신기 사이에 연결을 설정해야합니다. 하나의 소켓 (일반적으로 서버 소켓)이 연결을 설정하기 위해 기다리는 경우 다른 소켓에는 연결이 필요할 수 있습니다. 이 두 소켓이 연결되면 양방향 데이터 전송을 수행 할 수 있으며 양 당사자는 전송 또는 수신 작업을 수행 할 수 있습니다.
UDP는 사용자 데이터 그램 프로토콜의 약어입니다. 연결이없는 프로토콜입니다. 각 데이터 그램은 전체 소스 또는 대상 주소를 포함한 독립적 인 정보입니다. 가능한 경로에 따라 네트워크의 대상으로 전송됩니다. 따라서 목적지에 도달 할 수 있는지 여부, 목적지에 도달 할 시간 및 콘텐츠의 정확성을 보장 할 수 없습니다.
비교하다:
UDP :
1. 각 데이터 그램은 완전한 주소 정보를 제공하므로 발신자와 수신기 사이에 연결을 설정할 필요가 없습니다.
2. DP가 데이터를 전송할 때 크기 제한이 있으며, 각 전송 된 데이터 그램은 64KB로 제한되어야합니다.
3. DP는 신뢰할 수없는 프로토콜이며 발신자가 보낸 데이터 그램이 반드시 같은 순서로 수신기에 도착할 필요는 없습니다.
TCP :
1. 연결 프로토콜에 연결하려면 소켓 간의 데이터 전송 전에 연결을 설정해야하므로 TCP에서는 연결 시간이 필요합니다.
2. CP 전송 데이터 크기 한계. 연결이 설정되면 양 당사자의 소켓은 대형 데이터를 통합 형식으로 전송할 수 있습니다.
3.CP는 수신기가 발신자가 보낸 모든 데이터를 완전히 올바르게 얻을 수 있도록 신뢰할 수있는 프로토콜입니다.
애플리케이션:
1. TCP는 네트워크 통신에서 활력이 매우 강합니다. 예를 들어, 원격 연결 (TELNET) 및 파일 전송 (FTP)에는 다양한 길이의 데이터가 안정적으로 전송되어야합니다. 그러나 안정적인 전송은 비용이 많이 듭니다. 데이터 컨텐츠의 정확성을 확인하면 필연적으로 컴퓨터 처리 시간과 네트워크 대역폭이 차지합니다. 따라서, TCP 전송 효율은 UDP의 효율만큼 높지 않다.
2. UDP는 작동하기가 간단하며 감독이 적으므로 일반적으로 LAN의 신뢰성이 높은 분산 시스템의 클라이언트/서버 응용 프로그램에서 일반적으로 사용됩니다. 예를 들어, 화상 회의 시스템에는 일관성이 보장되는 한이 경우 UDP를 사용하는 것이 더 합리적입니다.
3. 소켓 기반 Java 네트워크 프로그래밍
1. 소켓입니까?
네트워크의 두 프로그램은 양방향 통신 연결을 통해 데이터 교환을 실현합니다. 이 양방향 링크의 한쪽 끝을 소켓이라고합니다. 소켓은 일반적으로 고객과 서비스 제공 업체 간의 연결에 사용됩니다. 소켓은 TCP/IP 프로토콜의 매우 인기있는 프로그래밍 인터페이스입니다. 소켓은 IP 주소와 포트 번호로 고유하게 결정됩니다.
그러나 소켓이 지원하는 프로토콜 유형은 TCP/IP뿐만 아니라 둘 사이에 필요한 연결이 필요하지 않습니다. Java 환경에서 소켓 프로그래밍은 주로 TCP/IP 프로토콜을 기반으로 한 네트워크 프로그래밍을 나타냅니다.
2. 코켓 통신 과정
서버쪽에는 특정 포트에 연결 요청이 있는지 여부를 듣습니다. 클라이언트 측은 서버 측에 연결 요청을 발행하고 서버 측은 수락 메시지를 클라이언트쪽에 다시 보냅니다. 연결이 설정됩니다. 서버와 클라이언트 측은 모두 보내기, 쓰기 및 기타 방법을 통해 서로 통신 할 수 있습니다.
완전히 기능적인 소켓의 경우 다음 기본 구조를 포함해야하며 작업 프로세스에는 다음과 같은 네 가지 기본 단계가 포함됩니다.
(1) 소켓 생성;
(2) 소켓에 연결된 입력/유출을 엽니 다.
(3) 특정 프로토콜에 따라 소켓을 읽고 쓰십시오.
(4) 닫기 소켓.
3. 빌드 소켓
소켓을 만듭니다
Java는 패키지 java.net에 두 개의 클래스 소켓과 서버 소켓을 제공하며, 이는 양방향 연결을 위해 클라이언트 및 서버를 나타냅니다. 이들은 두 개의 매우 잘 포장 된 클래스이며 사용하기가 매우 쉽습니다. 시공 방법은 다음과 같습니다.
소켓 (inetAddress 주소, int 포트);
소켓 (inetAddress 주소, int port, boolean 스트림);
소켓 (문자열 호스트, int prot);
소켓 (문자열 호스트, int prot, 부울 스트림);
소켓 (socketimpl imp)
소켓 (문자열 호스트, int port, inetAddress localAddr, int localport)
소켓 (inetAddress 주소, int port, inetAddress localAddr, int localport)
serversocket (int port);
serversocket (int port, int backlog);
serversocket (int port, int backlog, inetaddress bindaddr)
주소, 호스트 및 포트는 각각 양방향 연결에서 다른 당사자의 IP 주소, 호스트 이름 및 포트 번호입니다. 스트림은 소켓이 스트림 소켓인지 또는 데이터 그램 소켓인지를 나타냅니다. LocalPort는 로컬 호스트의 포트 번호를 나타냅니다. LocalAddr 및 bindaddr는 로컬 컴퓨터의 주소입니다 (서버 소켓의 호스트 주소). 명소는 소켓의 부모 클래스입니다. 서버 소켓을 생성하고 소켓을 생성하는 데 사용할 수 있습니다. 카운트는 서버가 지원할 수있는 최대 연결 수를 나타냅니다. 예를 들어:
소켓 클라이언트 = 새로운 소켓 ( "127.0.0.1", 8888);
Serversocket Server = New Serversocket (8888);
포트를 선택할 때주의해야합니다. 각 포트는 특정 서비스를 제공합니다. 올바른 포트를 제공 하여만 해당 서비스를 얻을 수 있습니다. 0 ~ 1023의 포트 번호는 시스템에 의해 예약됩니다. 예를 들어, HTTP 서비스의 포트 번호는 80이고, 텔넷 서비스의 포트 번호는 21이고, FTP 서비스의 포트 번호는 23입니다. 따라서 포트 번호를 선택할 때는 갈등을 방지하기 위해 1023보다 큰 숫자를 선택하는 것이 가장 좋습니다.
소켓을 만들 때 오류가 발생하면 IOException이 생성되며 프로그램에서 처리해야합니다. 따라서 소켓 또는 서버 소켓을 만들 때 예외를 포착하거나 던져야합니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.