목록프로그래밍 (3)
순간이 영원해 지는 곳
한개의 클래스 파일만 있는 경우엔 커맨드 창에서 java main.class 를 입력하면 실행이 되지만 프로그램에서 사용하는 클래스가 여러개인 경우엔 실행이 되지 않는다. 아래 방법은 여러개의 클래스를 사용하는 자바 프로그램을 커맨드 창에서 실행하는 방법이다. 또한 외부 jar 파일에 포함된 클래스를 사용하는 경우에도 main메소드가 포함된 클래스를 jar 파일로 만들어서 실행할 수 있다. 참고로 jar 파일에 있는 클래스에 특정 패키지에 속한다는 것을 명시해 두었다면, jar 파일에 클래스를 넣을때 명시한 패키지명과 같은 디렉토리안에 클래스를 넣고 함께 jar파일로 만들어야 한다. main.class pack/sub.class // sub 클래스는 pack 이라는 패키지에 속함 bin/poo.jar /..
프로그래머 입장에서 보는 TCP와 UDP 패킷 전달 TCP는 신뢰성 있는 통신을 보장한다고 다들 배웠을 것이다. 프로그래머 입장에서 TCP를 다시 보자. 1. in-order delievery(순서대로 전송) 우리가 send(1000byte)를 여러번 호출하는 경우, send()호출 한번에 패킷 하나가 생성되어 전달된다고 가정해보자. 이 경우 네트워크 경로상의 문제로 인해 먼저 전송한 데이터가 나중에 전달될 수 있다. 하지만 프로그래머는 그것을 신경쓰지 않아도 된다. TCP(L4 : Transport Layer)에서 순서가 뒤 바뀐 패킷을 원래대로 조립하여 프로그래머가 다루는 데이터의 형태로 만들어서 상위계층( Application Layer )로 올려준다. 그러므로 송신자가 보낸 순서대로 수신자는 데이..
MFC CAsyncSocket Class 비동기 소켓 클래스 이다. 비동기라 함은 함수가 실패했을 경우에도 곧장 리턴이 되어 다음 줄의 코드가 실행된다는 뜻이다. 따라서 이 클래스에 있는 Send, Receive, SendTo, ReceiveFrom 함수는 모두 호출이후 곧장 리턴되는 논블로킹(non-blocking) 비동기 함수 이다. 동기(blocking)함수라면 해당 함수가 성공하거나 대기시간이 만료될때까지 리턴되지 않는다. 아래는 CAsyncSocket클래스 또는 이 클래스를 상속받은 클래스의 객체에서 TCP를 사용하는 경우에 적용되는 콜백함수의 호출 시기다. * OnConnect() : 클라이언트에서 Connect()함수를 호출한 경우 Conncet 시도에 대한 결과가 나왔을때 호출된다. 이 함..