Java에서 TCP/IP를 사용하여 네트워크를 통해 서버에 연결하려면 java.net.Socket 객체를 생성하고 서버에 연결해야 합니다. Java NIO를 사용하려는 경우 Java NIO에서 SocketChannel 객체를 생성할 수도 있습니다.
소켓 생성
다음 샘플 코드는 IP 주소가 78.64.84.171인 서버의 포트 80에 연결됩니다. 이 서버는 당사의 웹 서버(www.VeVB.COm)이고 포트 80은 웹 서비스 포트입니다.
다음과 같이 코드 코드를 복사합니다.
소켓 소켓 = new Socket("78.46.84.171", 80);
다음 예와 같이 IP 주소 대신 도메인 이름을 사용할 수도 있습니다.
다음과 같이 코드 코드를 복사합니다.
소켓 소켓 = new Socket("VeVB.COm", 80);
소켓이 데이터를 보냅니다.
소켓을 통해 데이터를 전송하려면 소켓의 출력 스트림(OutputStream)을 가져와야 합니다. 샘플 코드는 다음과 같습니다.
다음과 같이 코드 코드를 복사합니다.
소켓 소켓 = new Socket("VeVB.COm", 80);
OutputStream 출력 = 소켓.getOutputStream();
out.write("일부 데이터".getBytes());
out.flush();
종료.닫기();
소켓.닫기();
코드는 매우 간단하지만, 네트워크를 통해 서버에 데이터를 전송하고 싶다면 반드시 Flush() 메소드를 호출하는 것을 잊지 말아야 합니다. 운영 체제의 기본 TCP/IP 구현은 먼저 데이터를 더 큰 데이터 캐시 블록에 넣고 캐시 블록의 크기는 TCP/IP 패킷 크기에 맞게 조정됩니다. (역자 주: 플러시() 메서드를 호출하면 운영 체제 캐시에만 데이터가 기록되며 데이터가 즉시 전송된다는 보장은 없습니다.)
소켓이 데이터를 읽습니다.
소켓에서 데이터를 읽으려면 소켓의 입력 스트림(InputStream)을 가져와야 합니다. 코드는 다음과 같습니다.
다음과 같이 코드 코드를 복사합니다.
소켓 소켓 = new Socket("VeVB.COm", 80);
InputStream in = 소켓.getInputStream();
int 데이터 = in.read();
//... 더 많은 데이터 읽기...
넣다();
소켓.닫기();
코드는 복잡하지 않지만, Socket의 입력 스트림에서 데이터를 읽는 것은 파일을 읽지 않는다는 점에 유의해야 합니다. 왜냐하면 Socket의 경우 서버가 연결이 닫히면 소켓의 입력 스트림은 -1을 반환하지만 실제로 서버는 연결을 계속 닫지 않습니다. 단일 연결을 통해 여러 요청을 보내고 싶다고 가정해 보겠습니다. 그런 다음 이 경우 연결을 닫는 것은 어리석은 일입니다.
따라서 소켓 입력 스트림에서 데이터를 읽을 때 읽을 바이트 수를 알아야 합니다. 이는 서버가 전송된 바이트 수를 데이터에 알려주거나 데이터 끝에 특수 문자를 설정하여 달성할 수 있습니다. . 마크업 방법이 구현됩니다.
소켓 닫기
소켓을 사용한 후에는 소켓을 닫고 서버와의 연결을 끊어야 합니다. 소켓을 닫으려면 Socket.close() 메서드만 호출하면 됩니다. 코드는 다음과 같습니다.
다음과 같이 코드 코드를 복사합니다.
소켓 소켓 = new Socket("VeVB.COm", 80);
소켓.닫기();
(전체 텍스트 끝)