#거래소 & Koscom 정보분배 Tcp데이타 수신및 처리

 

1. 수신받는 쪽이 서버입니다.

    1.1 거래소 & Koscom은 데이타를 송신하는 역할을 합니다.

    1.2 Ack데이타가 없다.(무조건 수신만 받는 서버의 역할을 담당합니다.) 

    1.2.1 다른 서버&클라이언트 구조와 다르게, Ack데이타가 존재하지 않으므로 수신하는 서버의 하드웨어 스펙과
    수신프로그램의 성능이 중요합니다.

    1.2.2 송신프로그램에서 1000 Record 라는 데이타를 주었는데, 수신프로그램에서

    1000 Record 데이타를 수신 못한다면 수신서버는 제 역할을 못한다고 할수 있습니다.

    1.3 수신서버에서 데이타를 못받게된다면, 송신서버(거래소 & Koscom 정보분배)에서는
    Error를 결과값으로 받게됩니다.

    1.4 Error를 결과값으로 받게되면, 송신서버(거래소 & Koscom 정보분배)담당자는
    연락을 취하는경우가 보통입니다.

    1.5 간략하게 정리하자면, 송신서버(거래소 & Koscom 정보분배)에서는 send라는 함수만 사용하고

    1.6 수신서버에서는 recv함수만 사용하면 되는것입니다.

 

2. 수신받는 데이타가 하나의 레코드가 아닐수 있습니다.

    2.1 최소 1개 레코드에서 n개의 레코드가 될수 있습니다.(호가여러개, 혹은 호가와 체결이 결합되어진 여러개)

    2.2 물론 레코드와 레코드를 분리하는 방법은 수신패킷 내부에 포함되어 있습니다.

 

3. 레코드와 레코드 사이의 구별하는 패킷분리 인자가 보통 3개 존재합니다.

    3.1 0xff, 0x0d, 0x0a 3개의 char변수를 기반으로 분리합니다.

 

4. 레코드한개를 분리해서 처리하도록 합니다.

    4.1 여러개의 레코드에서 한개의 레코드를 추출해서, 처리를 합니다.

        4.1.1 호가 레코드, 1종목 처리

        4.1.2 체결 레코드, 1종목 처리

    4.2 추출한 레코드를 수신프로그램에서 동시에 처리하는것은 바람직 하지 않습니다.

        4.2.1 주로 Queue를 통해서 전송해서 Queue를 읽어들이는 처리프로그램을 따로 작성해야 합니다.

    4.3 Queue통해서 읽어들인 레코드는 주식로직을 통해서 처리합니다.

    4.4 주식로직에 대한 부분은 너무 방대하므로 여기서는 SKIP합니다.

    4.5 수신구조체가 필요합니다.

    4.6 처리구조체가 필요합니다.(수신된 데이타를 전부 보관하는건 비효율적이라고 생각합니다.)

    4.6.1 화면에서 필요한 데이타를 기획해서, 처리구조체를 정의하면 됩니다.

 

5. 처리되어진 데이타는 저장소에 보관합니다.(대량의 데이타이고 빠른 조회를 위해서 메모리 기반으로 많이 저장소를 선택합니다.)

    5.1 Shared Memory가 될수 있습니다.

    5.2 DataBase가 될수 있습니다.

    5.3 File가 될수 있습니다.

 

6. 저장되어진 데이타를 조합해서, 클라이언트로 보내주면,거래소 & Koscom 정보분배 Tcp데이타를 외부에서 볼수 있습니다.

    6.1 Web
    (Request & Response <-> Web Server <-> Was(Tomcat) <-> JNI <-> Jni FrameWork <-> Memory In Server)

    6.2 HTS

    6.3 MTS

 

7. 업무볼륨

    7.1 1-5번까지의 부분은 서버의 역할중에서 10%정도 볼륨이며

    7.2 5-6번까지의 부분이 나머지 90%의 역할을 담당합니다.

 

 

더욱 궁금한부분은 xterm92@naver.com으로 연락부탁드립니다.

 

#Compile

gcc -I/usr/local/jdk1.7.0_79/include -I/usr/local/jdk1.7.0_79/include/linux -I/usr2/sinfo/src/include -I/usr/local/mysql/include -I./../jni_include  -fPIC -g -c -Wall SiseLibJong.c

 

gcc -I/usr/local/jdk1.7.0_79/include -I/usr/local/jdk1.7.0_79/include/linux -I/usr2/sinfo/src/include -I/usr/local/mysql/include -I./../jni_include  -fPIC -g -c -Wall ShmOpJong.c

 

 

#Link(so)

#gcc -shared -fPIC -o libShmJong.so SiseLibJong.so ShmOpJong.so

../util/Common.o /usr2/sinfo/src/util/MEMORY.o /usr2/sinfo/src/util/IPC.o /usr2/sinfo/src/util/STRLIB.o /usr2/sinfo/src/util/FUNC.o -lm -lpthread -lnsl

 

#Link(exe)

#gcc -o exeShmJong SiseLibJong.so ShmOpJong.so

../util/Common.o /usr2/sinfo/src/util/MEMORY.o /usr2/sinfo/src/util/IPC.o /usr2/sinfo/src/util/STRLIB.o /usr2/sinfo/src/util/FUNC.o -lm

-lpthread -lnsl

 

 

 

 

Makefile
0.00MB

 

 

증권사는 전용선을 통해서 UDP데이타를 수신하며

인터넷사업자 & 개인은 인터넷을 통한 TCP데이타를 수신받는다.

 

구축에 대한 문의는 xterm92@naver.com 으로 주세요.

 

 

c_sharp_console_hexa.cs
0.01MB

 

Windows10에서 c#을 이용한 Console Hexa 프로그램(When? - 2021.04.08 final Update)

 

Based By)Microsoft.NET

 

Microsoft 공식 홈페이지

Microsoft는 목표와 가치는 전세계의 사람과 기업이 잠재력을 최대한 발휘할 수 있도록 돕는 것입니다.

www.microsoft.com

 

 

 

 

c# 소스파일에 대한 컴파일할수 있는 환경을 만들었다.

 

Windows10 에는 Microsoft.NET\Framework64\가 자동으로 설정되어 있다. 

 

즉 c#을 사용할수 있다. csc(C# compiler)

 

Windows10 에는 2가지 개발도구가 존재한다.

1. c#

2. WebBrowser 의 JavaScript

 

 

 

docs.microsoft.com/ko-kr/dotnet/framework/migration-guide/how-to-determine-which-versions-are-installed

 

설치된 .NET Framework 버전 확인

코드, regedit.exe 또는 PowerShell을 사용하여 Windows 레지스트리를 쿼리하는 방법으로 컴퓨터에 설치된 .NET Framework 버전을 검색합니다.

docs.microsoft.com

 

 

RcvManualData.c
0.02MB
packet.h
0.00MB

 

마지막이 0xff로 끝나는,ㅡㅡ 데이타를 수신할경우에,ㅡㅡㅡㅡㅡㅡㅡㅡ
while(1)
{
    csock = accept();
    while(1)
    {
        recv_len = recv( csock, tmp, sizeof(tmp), 0);
        if(recv_len > 0)
        {
            for(ii=0; ii<recv_len; ii++)
            {
                data[data_len++ ] = tmp[ii];
                if(data_len > 2 && (unsifned char)data[data_len - 1] == (unsigned char)0xff)
                {
                    fprintf(stderr, "%.*s\n", data_len, data);
                    data_len = 0;
                    memset(data, 0x00, sizeof(data));
                }
           }
       }
        else break;
    }
    close(csock);
}

recv_handler.c
0.00MB

fss_send.c
0.00MB

 

+ Recent posts