Socket 프로 그래 밍 및 자바 실현
클 라 이언 트 가 서버 간 에 사용 하 는 대부분의 통신 구성 요 소 는 socket 인 터 페 이 스 를 기반 으로 이 루어 집 니 다.Socket 은 두 프로그램 간 에 양 방향 데이터 전송 을 하 는 네트워크 통신 점 으로 주소 와 포트 번호 가 표시 되 어 있다.모든 서비스 프로그램 은 서 비 스 를 제공 할 때 하나의 포트 에서 진행 되 어야 하 며,이 서 비 스 를 사용 하려 는 클 라 이언 트 도 이 포트 에 연결 해 야 한다.Socket 은 전송 층 을 바탕 으로 하기 때문에 비교적 원시 적 인 통신 프로 토 콜 체제 이다.Socket 의 데이터 표현 형식 을 통 해 바이트 흐름 정보 이기 때문에 통신 쌍방 이 특정한 구체 적 인 응용 을 완성 하려 면 반드시 쌍방 이 약정 한 방식 으로 데이터 의 포맷 과 해석 을 해 야 한다.우 리 는 Socket 프로 그래 밍 을 사용 하 는 것 이 비교적 번 거 롭 지만 더욱 강 한 유연성 과 광범 위 한 사용 분 야 를 가 진 다 는 것 을 알 수 있다.
어떤 친구 들 은 클 라 이언 트/서버 작업 모델 이 도대체 어떤 것 이 냐 고 물 어 볼 것 이다.자,다음은 그림 과 결합 하여 그들의 작업 모델 을 소개 하고 싶 습 니 다.
그렇다면 자바 응용 프로그램 은 어떻게 상기 과정 을 실현 합 니까?java.net 패키지 에는 두 가지 종류의 Socket 과 ServerSocket 이 있 는데 각각 클 라 이언 트 와 서버 에 Socket 통신 을 만 드 는 데 사용 된다.
먼저 클 라 이언 트 프로그램 이 작성 한 절 차 를 살 펴 보 겠 습 니 다.
1.먼저 Socket 류 의 구조 함 수 를 호출 하고 서버 가 지정 한 IP 주소 나 지정 한 호스트 이름과 지정 한 포트 번 호 를 매개 변수 로 하여 Socket 흐름 을 만 듭 니 다.Socket 흐름 을 만 드 는 과정 에서 서버 에 통신 연결 을 요청 하 는 과정 을 포함 합 니 다.
2.클 라 이언 트 통신 Socket 을 만 든 후.Socket 방법 getInputStream()과 getOutputStream()을 사용 하여 입력/출력 흐름 을 만 들 수 있 습 니 다.이렇게 Socket 류 를 사용 하면 네트워크 입 출력 도 스 트림 대상 으로 바 뀌 는 과정 이다.
3.입 출력 스 트림 대상 의 해당 방법 으로 글 씨 를 읽 고 스 트림 데 이 터 를 절약 합 니 다.스 트림 은 통신 에 사용 되 는 Socket 과 연결 되 어 있 고 Socket 은 서버 측 과 연결 되 는 점 이기 때문에 데 이 터 는 서버 에서 받 거나 서버 로 전 송 됩 니 다.이때 우 리 는 바이트 흐름 데 이 터 를 클 라 이언 트 와 서버 간 의 협의 에 따라 처리 하고 쌍방의 통신 임 무 를 완성 할 수 있다.
4.통신 작업 이 끝 난 후에 우 리 는 스 트림 대상 의 close()방법 으로 네트워크 통신 에 사용 되 는 입 출력 흐름 을 닫 고 Socket 대상 의 close()방법 으로 Socket 을 닫 습 니 다.
다음은 간단 한 예 를 통 해 클 라 이언 트 프로그램의 작성 을 소개 하고 싶 습 니 다.
:
import java.io.*;
import java.net.*;
public class SocketCommunicationClient
{
public static void main(String[] args)
{
try{
Socket clientSocket =new Socket ("mice",9000);// Socket mice 9000
OutputStream output =clientSocket.getOutputStream();// Socket
DataInputStream input=new DataInputStream(clientSocket.getInputStream());
file://
int c;
String response;
while (( c= System.in.read())!=-1)// ,
{
output.write((byte)c);
if(c=='
')// ,
{
output.flush();
response=input.readLine();
System.out.println("Communication:"+response);
}
}
output.close();
input.close();
clientSocket.close();
} catch (Exception e){
System.err.println("Exception :"+e);
}
}
}
이 프로그램 은 매우 간단 한 데이터 통신 의 예 입 니 다.프로그램 은 먼저 Socket 을 만 들 고 호스트 mice 의 포트 9000 과 연결 한 다음 에 입 출력 흐름 을 엽 니 다.그 다음 에 프로그램 은 표준 입력 수신 문 자 를 입력 하고 흐름 에 기록 합 니 다.한 줄 을 채 울 때마다(사용자 키 로 Enter 에 들 어 가 는 것 을 표지 로 합 니 다).버퍼 에 있 는 문자열 을 mice 에 있 는 서버 엔 드 프로그램 으로 보 내 처리 하고 서버 엔 드 의 응답 을 기다 리 고 있 습 니 다.input.readLine()방법 호출 은 응답 정 보 를 받 을 때 까지 프로그램 이 정 체 됩 니 다.프로그램 은 사용자 가 중단 자 를 입력 할 때 까지 이 과정 을 반복 합 니 다.마지막 프로그램 은 socket 입 출력 흐름 을 닫 고 socket 과 서버 의 연결 을 닫 습 니 다.
위 에서 우 리 는 자바 를 사용 하여 클 라 이언 트 의 Socket 인터페이스 프로그램 을 만 드 는 방법 을 보 았 습 니 다.다음은 서버 쪽 의 Socket 인터페이스 프로그램의 자바 실현 방법 에 대해 간략하게 이야기 하고 싶 습 니 다.그 과정 은 다음 과 같 습 니 다.
1.먼저 ServerSocket 류 를 호출 하여 특정한 포트 번 호 를 매개 변수 로 하여 ServerSocket 대상 을 만 듭 니 다.즉,서버 측의 서비스 프로그램 이 지정 한 포트 에서 감청 하 는 Socket 입 니 다.
2.서버 엔 드 프로그램 은 ServerSocket 대상 의 accept()방법 을 사용 하여 클 라 이언 트 프로그램의 연결 요청 을 받 습 니 다.이 때 서버 엔 드 는 클 라 이언 트 가 보 낸 연결 요청 을 받 을 때 까지 정체 상 태 를 유지 합 니 다.이 방법 은 새로운 Socket 류 의 인 스 턴 스 를 되 돌려 주 고 클 라 이언 트 와 구축 한 통신 링크 가 서비스 프로그램 에 있 는 통신 점 을 대표 합 니 다.자바 의 다 중 스 레 드 프로 그래 밍 방법 을 사용 하면 동시 서버 를 실현 하고 다른 고객 의 연결 요청 을 계속 감청 할 수 있 습 니 다.
3.새 Socket 대상 을 사용 하여 입력,출력 스 트림 대상 을 만 듭 니 다.
4.스 트림 대상 의 방법 으로 클 라 이언 트 와 의 데이터 전송 을 완성 하고 약정 한 협의 에 따라 클 라 이언 트 의 요청 데 이 터 를 식별 하고 처리 하 며 처리 한 결 과 를 클 라 이언 트 에 게 되 돌려 줍 니 다.
5.클 라 이언 트 작업 이 끝나 면 서버 엔 드 프로그램 이 클 라 이언 트 와 통신 하 는 흐름 과 통신 하 는 Socket 을 닫 습 니 다.
6.서버 프로그램 이 실 행 될 때 감청 용 Socket 을 닫 아야 합 니 다.
서버 쪽 프로그램의 자바 구현 을 살 펴 보 겠 습 니 다.
:
import java.net.*;
import java.io.*;
public class SocketCommunicationServer
{
public static void main(String[] args)
try
{
boolean flag=true;//
Socket client=null;// Socket client
String inputLine;
ServerSocket serverSocket =new ServerSocket (9000);// 9000 Socket
System.out.println(" 9000 ");
file:// serverSocket.getLocalPort()
while(flag)
{
client=serverSocket.accept();
file:// Socket ,
DataInputStream input=new DataInputStream(new BufferedInputStream(client.getInputStream()));
PrintStream output=new PrintStream(new BufferedOutputStream(client.getOutputStream());
while (( inputLine= input.readLine())!=null)
{
if(inputLine.equals("Stop"))
{
flag=false;
break;
}
output.println(inputLine);
output.flush();
}
output.close();
input.close();
client.close();
}
serverSocket.close();
}catch(IOException e){}
}
}
}
이상,저 는 Socket 프로 그래 밍 의 메커니즘 과 자바 를 사용 하여 Socket 프로 그래 밍 을 하 는 실현 방법 에 대해 간략하게 이야기 하 였 으 며,여러분 에 게 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java Socket 프로그래밍 인스턴스(2) - UDP 기본 사용하나.서버 코드: 2.클라이언트 코드: 상기 코드의 UDP 서버는 단일 라인으로 클라이언트를 한 번에 한 번만 서비스할 수 있습니다. 다음은 본문의 전체 내용입니다. 더 많은 Java 문법을 보십시오.《 》、《 》、...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.