Q&A

  • 소켓에 대한 질문 드립니다..
현재 통신 소켓이 TCP/IP 로 되어 있습니다
그런데 특정시간이 되면 많이 느려지는 문제점이 발생하고 있습니다
데이타 손실 없이 이런 문제점을 해결할수 있는 방법이 있을까요?
다른 소켓을 사용해야 하는건지
고수님들의 조언이 필요합니다
제가 이쪽 부분은 잘 몰라서 이곳에 도움을 요청합니다
2  COMMENTS
  • Profile
    홍성락 2008.10.02 20:01
    대부분 속도는 비슷할거구요, 소켓 통신시 과부하걸려 데이타 손실등의 원인을 보면 개발자가 한 함수내에 무리한 코딩으로 발생하는게 많습니다. 받는 부분과 그걸 처리 가공하는걸 분리해 보는 방법으로도 해보세요.
    경우에 따라
    1. 소켓으로 주고 받는 부분만 별도로 만들어 DB로 데이타를 넣게하는 경우도 있고,
    별도 실행하는 프로그그램으로 만들어 DB로 데이타를 넣게하는 경우도 있고,

    2. 소켓의 받는 이벤트에서 무리한 소스를 전부 스레드로 빼내는 방법도...
    그런데 가장 편한건 소켓 받을때 타이머 하나만 실행시키고 그 타이머가 그 안의 기능을 돌립니다, 전역 변수로 테이타를 누적 시키는 방법.
    즉, 데이타는 소켓이 계속 받습니다, 그걸 가공하는 함수는 타이머에 의해 정해짐 시간에 정해진 새수만 가공하죠, 별도로 만등 함수는 하나를 가공 중에 새 데이타가 들어와 타이머가 다시 돌게끔하면 지금 사용중인걸 하고 할건지 멈추고 새로이 가공을 할건지는 코딩하면 방법 등등...
  • Profile
    홍성락 2008.10.03 19:35
    추가 질문에 대하여...
    제가보기엔 2가지 사항으로 판단됩니다.
    소켓으로 받는 처리가 잘 코딩된 전제하에서요.
    이 테스트는 데이타베이스 터리부분을 잠시 막고 메모장이나 다른걸로 보면서 데스트하면 됩니다. 거의 소켓 컴포는 비슷해요.
    1. 데이타량이 많아 받는 횟수의의 간격에 비해 데이타베이스 생성/조회등 처리가 늦어 발생하는 경우는 메모리 기반의 데이타베이스가 필요할거구요. 차량관제나 위급처리 등에서 많이 사용합니다.
    2. 소켓받는 부분과 데이타베이스 처리는 물리적으로 분리 되었다지만 동시방생시 상호 처리 완료를 기다린다든가 같은 한건당 순서로만 진행한다든가 하는 경우, 소켓을 받는 부분에서의 코딩은 데이타 저장 함수를 직접 호출하는 것이 아니라 메모리상의 누적을 계속하고, 데이타 처리 하는 함수는 타이머나 별도 슬레드 형식으로 돌아가야 한다는 겁니다.

    대부분 개발자의 소스는 어느 정도 이론적으로 맞습니다, 그러나 그 현장에서 디버깅해보거나 데이타베이스 컨설팅을 받아야합니다.
    • 델코이
    • 2008.10.06 18:39
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 소울해커
      2008.10.07 19:07
      procedure TForm1.btnInputClick(Sender: TObject); begin AdvStringGrid1.Cells[1, 1] := Edit1.Tex...
    • 이정욱
      2008.10.05 03:37
      그냥 폼에서 KeyPreview 속성을 True로 주시고 그 폼의 키 이벤트에서 처리 하시면 될것 같습니다.
    • 윤창훈
      2008.10.05 12:43
      답변 감사드립니다. 제가 만드는 프로그램은 label이 1000개정도 화면에 배치되면서 focus를 갖고...
    • 김진
    • 2008.10.03 05:12
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.10.05 03:39
      TFileStream 으로 위에 검색 란에서 검색해 보시면.. 아주 많은 예제들이 있습니다...
    • 이선구
    • 2008.10.03 03:14
    • 1 COMMENTS
    • /
    • 0 LIKES
    • phono
      2008.10.07 18:05
      ??? 퀵레포트의 라벨캡션으로 실수 인쇄할경우.. 보통 라벨.caption := FormatFloat('#,##0.#...
    • steps
      2008.10.04 20:31
      이미지밖에 캡션을 달려면 이미지컴포넌트의 캔버스가 이미지보다 커야겠지요. 이미지와 캡션들의 너비...
    • 이창엽
    • 2008.10.02 19:56
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2008.10.02 21:50
      안녕하세요.. 실행파일이 실행되었다면 그건 프로세서이구.. 데이타 영역이 아닌 메모리에 상주하게 되...
    • 윤박사
    • 2008.10.02 18:05
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2008.10.02 20:01
      대부분 속도는 비슷할거구요, 소켓 통신시 과부하걸려 데이타 손실등의 원인을 보면 개발자가 한 함수내...
    • 홍성락
      2008.10.03 19:35
      추가 질문에 대하여... 제가보기엔 2가지 사항으로 판단됩니다. 소켓으로 받는 처리가 잘 코딩된 전제...
    • 이근홍
    • 2008.10.02 04:21
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2008.10.02 06:35
      if edtLocalIP.text:='' then if edtLocalIP.text ='' then 이게 아닐지요.
    • 이강석
    • 2008.10.02 02:03
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이강석
      2008.10.02 02:39
      패킷 몇개를 날려먹고 종료할
    • 이강석
    • 2008.10.06 19:48
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이강석
      2008.10.07 00:21
      이게 왜 여기 달렸지??? ㅠㅠ
    • 박종철
    • 2008.10.01 20:57
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박종철
      2008.10.01 23:32
      검색을 하다 보니 BLOB 크기 때문에 발생하는 문제로 판단이 되었습니다. (파일크기를 아주 팍 줄여서 ...
    • 이근홍
    • 2008.10.01 18:26
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 박상윤
      2008.10.03 01:22
      Xvid 코덱을 설치 하시면 됩니다. 통합코덱을 설치 하셔두 되구요..
    • 아르스
    • 2008.10.01 05:52
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 머문자리
      2008.10.01 02:06
      참고로 델파이도 여러피시에서 설치해서 확인해보고 indy component 버전도 7,10에서 확인하여도 결과는 ...
    • 이정욱
      2008.10.01 04:09
      정확하게 이해를 못하겠는데요.. 혹시 접속을 받는 PC의 윈도우 방화벽이 켜져 있는게 아닐까요?
    • 머문자리
      2008.10.01 04:23
      리눅스 서버를 체크하구요 21번 포트로 데몬 죽였다 살려가면서 확인하는데 쉽지가 않아요..
    • 머문자리
      2008.10.01 04:39
      감사합니다 이정욱님 접속을 하는 PC의 방화벽 설정때문인 듯 합니다. 방화벽이 켜져 있는경우 원격지 ...
    • 서해근
    • 2008.09.30 22:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 서해근
      2008.09.30 23:38
      알고 보니 제 데스크탑 메모리가 2기가 인데 그게 문제 였던거 같네요. 델파이 버그네요;; 델마당...
    • 소울해커
      2008.09.30 20:56
      그냥 TEdit 에 코딩으로 조작해서 씁니다. 외부 컴포넌트를 쓰게될 경우 그 편리함 보다 여러모로 에...
    • 장성호
      2008.09.30 21:01
      팁 게시판에 TEdit를 조작해서 사용하는 방법이... http://www.delphi.co.kr/zboard/view.php?id=tips...
    • 마바리
      2008.10.01 21:50
      불편한게 무엇인지... 원하시는 기능이 무엇인지 알면 더 낳을듯 한데요
    • 아폴론
      2008.10.02 06:16
      천 자리마다 콤마는 안 찍히네요?..
    • 나현아빠
      2008.10.03 13:39
      답변들 감사합니다. 특별히 없나 보네요.. 걍 수정해서 쓰기로 마음 먹고, 필요한거 수정했습니다. ...
    • 델만세
    • 2008.09.30 00:30
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 소울해커
      2008.09.30 20:54
      조회할 쿼리를 먼저 만드셔야겠죠. WHERE 구문은 시작기간과 종료기간을 파라미터로 받아서 그 기간사...
    • 델만세
      2008.10.02 04:06
      아~ 감사합니다.