자바 네트워크 프로 그래 밍 의 socket 네트워크 프로 그래 밍 예제(서버 엔 드/클 라 이언 트)
지식 을 배 우 는 가장 좋 은 방법 은 바로 그것 을 사용 하 는 것 이다.앞의 필 기 를 통 해 우 리 는 호스트 의 주소 정 보 를 어떻게 얻 는 지 이미 알 고 있다.지금 우 리 는 간단 한 프로그램 을 통 해 전송 층 이 TCP 프로 토 콜 을 사용 하 는 Socket 프로 그래 밍 을 초보 적 으로 학습 하고 있다.
TCP 서버 쪽
Socket 프로 그래 밍 에서 서버 쪽 은 클 라 이언 트 보다 훨씬 복잡 합 니 다.서버 측의 작업 은 통신 단말 기 를 만들어 클 라 이언 트 의 연결 을 수 동적 으로 기다 리 는 것 이다.다음 서버 엔 드 프로그램의 예제 역할 은 콘 솔 에서 가 져 온 포트 번 호 를 감청 하고 클 라 이언 트 가 보 낸 메 시 지 를 다시 보 내 는 것 입 니 다.
importjava.net.*;
importjava.text.MessageFormat;
importjava.io.*;
publicclassTCPEchoServer{
privatestaticfinalintBUFSIZE=32;
publicstaticvoidmain(String[]args)throwsIOException{
//TODOAuto-generatedmethodstub
//
if(args.length!=1)
thrownewIllegalArgumentException("Parameter(s):<Port>");
//
intservPort=Integer.parseInt(args[0]);
// ServerSocket
ServerSocketservSocket=newServerSocket(servPort);
System.out.println(MessageFormat.format(" , :{0}",args[0]));
//
intrecvMsgSize;
//
byte[]receiveBuf=newbyte[BUFSIZE];
// , ,
while(true){
// ,
SocketclntSocket=servSocket.accept();
// SocketAddress
SocketAddressclientAddress=clntSocket.getRemoteSocketAddress();
//
System.out.println("Handlingclientat"+clientAddress);
//
InputStreamin=clntSocket.getInputStream();
//
OutputStreamout=clntSocket.getOutputStream();
// ,
while((recvMsgSize=in.read(receiveBuf))!=-1){
out.write(receiveBuf,0,recvMsgSize);
}
// ,
System.out.println(" ");
clntSocket.close();
}
}
}
TCP 클 라 이언 트 는 Socket 프로 그래 밍 에서 먼저 클 라 이언 트 가 서버 측 에 보 낸 다음 에 서버 측의 응답 을 수 동적 으로 기 다 려 야 합 니 다.다음 예제 에 서 는 서버 측 에 메 시 지 를 보 내 고 서버 측 에서 보 내 는 메 시 지 를 기다 리 며 인쇄 하여 표시 합 니 다.
importjava.io.*;
importjava.net.Socket;
importjava.net.SocketException;
publicclassTCPEchoClient{
publicstaticvoidmain(String[]args)throwsIOException{
//TODOAuto-generatedmethodstub
//
if((args.length<2)||(args.length>3))
thrownewIllegalArgumentException(
"Parameter(s):<Server><Word>[<Port>]]");
//
Stringserver=args[0];
//
byte[]data=args[1].getBytes();
// , 8099
intservPort=(args.length==3)?Integer.parseInt(args[2]):8099;
// Socket
Socketsocket=newSocket(server,servPort);
System.out.println("Connectedtoserver...sendingechostring");
// ,
InputStreamin=socket.getInputStream();
// ,
OutputStreamout=socket.getOutputStream();
//
out.write(data);
// ,
inttotalBytesRcvd=0;
//
intbytesRcvd;
while(totalBytesRcvd<data.length){
// , -1,read
if((bytesRcvd=in.read(data,totalBytesRcvd,data.length
-totalBytesRcvd))==-1)
thrownewSocketException(" ");
totalBytesRcvd+=bytesRcvd;
}
//
System.out.println("Received:"+newString(data));
//
socket.close();
}
}
먼저 서버 단 을 실행 하고 8099 포트 를 감청 합 니 다이 어 클 라 이언 트 프로그램 을 실행 하고 서버 측 에 메 시 지 를 보 냅 니 다
우리 의 서버 엔 드 콘 솔 을 다시 보면 앞의 클 라 이언 트 연결 주소 정 보 를 볼 수 있 습 니 다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
React 구성 요소에서 소켓 이벤트 리스너가 여러 번 실행됩니다.기본적이지만 종종 간과되는 사이드 프로젝트를 하면서 배운 것이 있습니다. 이 프로젝트에는 단순히 두 가지 주요 부분이 포함되어 있습니다. 프런트 엔드: 반응 및 재료 UI 백엔드: Express, Typescript...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.