[자바네트워크강좌, 소켓, JAVA Socket]이번 강좌에서는 JAVA Client Network의 중요한 클래스인 Socket에 대해 살펴 볼 겁니다.
Socket
클라이언트/서버 네트웍에서 서버는 데이터베이스에 질의를 수행해서 어떤 결과를 클라이언트에 보낸다든지 또는 현재 주식 시세를 확인 후
클라이언트에 보낸다든지 하는 일련의 서비스를 제공 합니다. 이때 클라이언트와 서버의 통신은 신뢰 할 수 있어야 하며 서버에서 보낸 데이터는
소실되거나 순서가 바귀어서는 안되는게 상식 이겠죠? TCP는 point-to-point(종단간)간의 통신에 있어 신뢰할 수 있는 서비스를
제공하며 TCP상에서 서로 통신을 하기 위해서는 양쪽이 먼저 연결을 수립한 후 통신을 하게 되는 것입니다. 또한 통신을 하기 위해 클라이언트와
서버는 연결에 바운딩된 소켓에 쓰거나 소켓을 통해 데이터를 읽을 수가 있는 것입니다. 결국 소켓(Socket)은 통신을 위한 양쪽 종단의 끝을
가리키는 것으로 Socket 클래스는 결국 클라이언트 프로그램과 서버 프로그램 사이의 연결 종단을 나타내기 위해 사용한다고 볼 수 있습니다.
java.net 패키지는 연결의 클라이언트 쪽과 서버 쪽을 표현하기 위해 Socket 과 ServerSocket 두개의 클래스를 포함하고 있으며
우리는 앞으로 이두개의 클래스에 대해 자세히 보도록 할 것입니다.
소켓을 생성하면 연결은 자동으로 이루어지며, 연결 할때 오류가 발생하면 IOException 이 발생 합니다.TCP 연결에는 로컬 IP
주소와 원격 IP 주소 , 로컬포트 , 원격 포트 등이 사용되며 Socket 이 생성되어 원격호스 트에 접속 할 때 대개는 사용하지 않는 로컬
포트가 사용 됩니다.
생성자
• Constructor – public Socket(InetAddress address, int port)
• Creates a stream socket and connects it to the specified port number at the
specified IP address. – public Socket(String host, int port)
• Creates a stream socket and connects it to the specified port number on the
named host.
소켓 모형도는 아래와 같습니다.
[예제]
//The Echo server is a well-known service that clients can rendezvous with on
port 7.
import java.net.*;
import java.io.*;
public class
EchoLoopClient {
public static void main(String [] args) {
Socket
mySocket;
String hostName, aLine;
BufferedReader fromSocket,
userInput;
PrintWriter toSocket;
try {
if(args.length > 0) hostName
= args[0];
else hostName = "127.0.0.1";
mySocket = new Socket(hostName,
7);
fromSocket = new BufferedReader(new
InputStreamReader(mySocket.getInputStream()));
toSocket = new
PrintWriter(mySocket.getOutputStream());
userInput = new BufferedReader(new
InputStreamReader(System.in));
while(true) {
aLine = userInput.readLine();
if (aLine.equals("."))
break;
toSocket.println(aLine);
toSocket.flush();
System.out.println(fromSocket.readLine());
}
fromSocket.close();
toSocket.close();
}
catch(UnknownHostException e)
{
System.out.println(e);
}
catch(Exception e)
{
System.out.println(e);
}
}
}
오라클자바커뮤니티에서 운영, 개발자 전문교육, 개인80%환급 오엔제이프로그래밍실무교육센터(www.onjprogramming.co.kr)
평일주간(9:30~18:20)
개강
(5/12)C#4.0,ADO.NET,Network
프로그래밍
(5/12)[기업100%환급]자바기초에서
JDBC, Servlet/JSP까지
(5/12)[기업100%환급]Spring
,MyBatis,Hibernate실무과정
(5/12)안드로이드개발자과정
(5/19)[기업100%환급]PL/SQL,ORACLE
HINT,TUNING
(5/21)[교육전취업확정]Spring,MyBatis,XPlatform실무프로젝트과정
(5/26)[기업100%환급]SQL기초에서
Schema Object까지
평일야간(19:00~21:50) 개강
(5/07)Spring3.X,
MyBatis, Hibernate실무과정
(5/09)웹퍼블리싱
마스터
(5/09)JAVA&WEB프레임워크실무과정
(5/09)SQL초보에서실전전문가까지
(5/16)자바웹(JSP,Spring,MyBatis,XPlatform)프로젝트과정
(5/16)C#,ASP.NET마스터
(5/19)안드로이드개발자과정
(5/20)개발자를위한PLSQL,SQL튜닝,힌트
주말(10:00~17:50)
개강
(5/03)안드로이드개발자과정
(5/03)C#,ASP.NET마스터
(5/03)JAVA&WEB프레임워크실무과정
(5/10)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(5/10)닷넷실무자를위한WPF개발자과정
(5/10)SQL초보에서실전전문가까지
(5/10)Spring3.X,
MyBatis, Hibernate실무과정
(5/11)웹퍼블리싱
마스터
(5/17)개발자를위한PLSQL,SQL튜닝,힌트
주말저녁(18:30~22:20)
개강
(5/17)자바&웹,jQUERY,스프링프레임워크
(5/17)SQL기초에서
Schema Object까지
댓글 없음:
댓글 쓰기