Q&A

  • 소켓프로그래밍에서 비정상적인 오류를 체크하려면?
서버와 클라이언트로 채팅 프로그램을 만들때

특정 클라이언트에서 정전 또는 클라이언트 프로그램의 예기치 않은 다운등이 발생할때

서버에서 다른 클라이언트들에게 메시지로 알려주려면 서버소켓의 OnClientError 이벤트에서

serversocket1.Socket.Connections[index:integer].sendtext('홍길동'이 비정상 종료했다.') 와 같은 처리를해야 할것 같은데

비정상적인 오류코드를 어떻게 처리해야할지 감감합니다.

만일 홍길동이라는 특정 클라이언트가 갑작스럽게 종료 되었을때 서버소켓에 홍길동측 소켓에 대한

IP주소등 정보들이 서버소켓에 제대로 전달이 되는겁니까? 정상적인 종료라면 몰라도

갑자기 정전이 된다면 자신의 정보를 서버소켓에 전달 해주고 정전될 수는 없을텐데...

이렇듯 비정상적인 오류 처리는 어떻게 처리해야 할지 간단한 예제가 있다면 부탁드립니다..

특정 유저가 비정상적인 종료가 되었을때 접속자리스트에서 지워줘야 하거든요...

이게 잘 안되서 실제로 2명 접속되어있는 상황인데도 5명 또는 10명등 훨씬 더 많게 접속되어있는것처럼 되거든요..

이거때문에 골머리 썩고 있습니다.. 도와주세요..



ps: 어떤분은 비정상 종료인 경우 ErrorEvent의 값이 eeDisconnect가 된다고도 하시고

또 에러코드마다 작성을 해주어야 한다고 하든데 제가 직접해보니 클라이언트측에서

값작스런 정전이나 다운등으로 비정상적인 종료시에도 잘 먹질 않습니다.

근본적인 에러처리방법을 알고싶습니다.



0  COMMENTS
    • 초보
    • 2001.07.24 00:44
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 짱아
    • 2001.07.23 23:12
    • 7 COMMENTS
    • /
    • 0 LIKES
    • ㅏㅔㅔ
      2001.07.24 01:03
      처음답변하신 분 처럼 locate를 한번써 보세요!!! locate문은 table,query모두 사용할 수 있습니다. 예...
    • 하기
      2001.07.23 23:47
      참고가 될지 모르겠지만요... Locate에 대해 한번 찾아 보세요... ^^; 짱아 wrote: > DBGRID에 CODE...
    • 뽀록이
      2001.07.24 00:55
      하기 wrote: > 참고가 될지 모르겠지만요... > Locate에 대해 한번 찾아 보세요... > ^^; > > 짱아 w...
    • 짱아
      2001.07.24 00:12
      하기 wrote: > 참고가 될지 모르겠지만요... > Locate에 대해 한번 찾아 보세요... > ^^; > > 짱아 w...
    • 하기
      2001.07.24 01:27
      If Locate('ITEM_NAME', VarArrayOf([Edit1.Text]), loPrtialKey) = False then ... ^^; 짱아 wrote: ...
    • sky
      2001.07.23 23:29
      짱아 wrote: > DBGRID에 CODE와 NAME라는 것을 조회해서 뿌려주게 되어 있습니다... > 근데 너무 많은 ...
    • 짱아
      2001.07.23 23:45
      sky wrote: > 짱아 wrote: > > DBGRID에 CODE와 NAME라는 것을 조회해서 뿌려주게 되어 있습니다... > ...
    • 몰라
    • 2001.07.23 22:31
    • 0 COMMENTS
    • /
    • 0 LIKES
    • ㅏㅔㅔ
    • 2001.07.23 22:18
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김지엽
      2001.07.23 23:23
      RDB라는건 RDBMS를 뜻하는 거겠지요? 그 경우도 refresh 명령어 잘 먹던데.. 어쩌면 DB의 TransIsolati...
    • ㅏㅔㅔ
      2001.07.23 23:59
      김지엽 wrote: > RDB라는건 RDBMS를 뜻하는 거겠지요? > 그 경우도 refresh 명령어 잘 먹던데.. > > ...
    • DRAGON
    • 2001.07.23 21:31
    • 3 COMMENTS
    • /
    • 0 LIKES
    • ^-_-^
      2001.07.23 22:26
      yo` 엑셀데이터를 바로 오라클디비로 넣지는 못할껍니다. 자료실에 보면 DBM 2000이라는 오라클용 ...
    • DRAGON
      2001.07.23 22:33
      ^-_-^ wrote: > yo` > > 엑셀데이터를 바로 오라클디비로 넣지는 못할껍니다. > > 자료실에 보면 D...
    • ^-_-^
      2001.07.24 19:18
      yo` 일반적으로 델파이를 기본값으로 설치를 하셨다면... c:program filescommon filesBorland Sha...
    • 왕초보
    • 2001.07.23 21:24
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 정성훈
      2001.07.23 22:37
      예제 보냈습니다. 좀 간단하게 만들어서 도움이 될지 모르겠습니다. MDI 형식으로 해서 보냈습니다. 그...
    • 하기
      2001.07.23 22:34
      우선 문자입력이 안되게 하는것은 Form2의 Edit속성중 Enabled나 ReadOnly속성을 바꾸어 주시면 되고요......
    • 박준영
    • 2001.07.23 21:22
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하기
      2001.07.23 22:25
      uses DBIProcs... Session.GetAliasNames(ListBox1.Items); //Alias명을 넣어주고... ... proc...
    • 클마스
    • 2001.07.23 21:06
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 하기
      2001.07.23 22:08
      with Table1 do begin For i := 0 to FieldCount -1 do ListBox1.Items.Add(Fields[i].Fi...
    • 클마스
      2001.07.24 20:20
      하기 wrote: > with Table1 do > begin > For i := 0 to FieldCount -1 do > ListBox1.I...
    • 박기웅
    • 2001.07.23 21:00
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 한휘
      2001.07.23 21:34
      음.. 쿼리를 해올때 아예.. 앞의 두자리나 세자리만을 가져오는 필드를 만드는 것입니다. 그리고 디비그리...
    • 박기웅
      2001.07.23 22:19
      한휘 wrote: > 음.. 쿼리를 해올때 아예.. 앞의 두자리나 세자리만을 가져오는 필드를 만드는 것입니다. ...
    • 한휘
      2001.07.23 22:29
      그러면.. 원래의 필드도 가져오고.. 끊어진 필드도 가져와서 보여주기는 끊어진 필드로 하고 내부적으로 ...
    • 백운선
      2001.07.23 23:47
      박기웅 wrote: > db그리드 클릭시 어느 몇번째 필드가 클릭 되었는지 알수 있는 방법은 없나요.. Qu...
    • 한휘
      2001.07.23 21:43
      DB그리드에 OnColEnter 이벤트 발생시에... DBGrid1.SelectedIndex 를 체크하면 되겠네요.. 박기웅...
    • 짱아
    • 2001.07.23 20:57
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 바람개비
      2001.07.24 00:53
      테이블을 사용하셨다면 FindKey,FindNearest 등을 사용하시던가 아님 Range(SetRangeStart,ApplyRange 등)...
    • ^-_-^
      2001.07.23 21:29
      yo` 카운터를 구현하실때, 로직의 차이죠..똑같습니다만, 하루에 한번만 체크하실려면 해당 아이피를...
    • 이지용
    • 2001.07.23 20:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • ^-_-^
      2001.07.23 21:38
      yo` 4000건의 레코드라면 별로 많은것도 아닌뎅 ^^'' 방법이야 여러가지가 있겟지만은 일반적으로 s...