Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
소켓버퍼 초기화?
Socket.SendBuf를 이용해서 데이터를 보내는데 중간에 버퍼가 초과해서
데이터가 가질 않습니다. 어떻게 해결해야하는지...
소켓버퍼를 초기화하면 될런지? 소켓버퍼를 초기화 하는방법은 무엇인지 알고싶습니다.
아님 다른 방법이라도 알려주세요.
고수님들의 답변을 기다리며....
4
COMMENTS
이대선
•
2000.08.18 20:13
델초 wrote:
>
> Socket.SendBuf를 이용해서 데이터를 보내는데 중간에 버퍼가 초과해서
> 데이터가 가질 않습니다. 어떻게 해결해야하는지...
>
> 소켓버퍼를 초기화하면 될런지? 소켓버퍼를 초기화 하는방법은 무엇인지 알고싶습니다.
> 아님 다른 방법이라도 알려주세요.
>
> 고수님들의 답변을 기다리며....
SendBuf로는 많은 데이타량이 한번에 가지 않습니다.
가장 좋은방법은 1024Byte 단위로 잘라서 차례차례 보내는 게 좋을 듯 합니다.
물론 이때로 Client와 Server간에 핸드셰이킹을 해야 겠죠....
핸드셰이킹이란 간단히 말하면...
너데이타 줬냐 그래 나 받았다 다므것 줘라 하는 것이죠...
그럼 이만..
0
0
삭제
수정
댓글
델초
•
2000.08.18 20:58
답변 감사드립니다.
제경우는 약간 다른것 같거든요(제가 질문을 잘못했나봅니다.)
Socket.SendBuf를 사용하긴 하지만 데이타를 한번에 많이 보내는건 아니구요 여러개의 데이터를 보내고 있죠. 근데 그중에 몇개를 보내지 못하거든요. 물론 한개한개 보낼때는 잘 가구요.
예를 들자면 a[1],a[2],a[3],a[4],a[5],a[6],a[7] 이라는 데이터를 보낼때 한 개씩보내면 잘 가는데 for문을 이용해서 보내면 데이터 몇개가 빠진다는거죠.(버퍼가 초과해서리...)
이건 어떻게 해결해야되나여~ 갈켜주세용~
이대선 wrote:
> 델초 wrote:
> >
> > Socket.SendBuf를 이용해서 데이터를 보내는데 중간에 버퍼가 초과해서
> > 데이터가 가질 않습니다. 어떻게 해결해야하는지...
> >
> > 소켓버퍼를 초기화하면 될런지? 소켓버퍼를 초기화 하는방법은 무엇인지 알고싶습니다.
> > 아님 다른 방법이라도 알려주세요.
> >
> > 고수님들의 답변을 기다리며....
>
> SendBuf로는 많은 데이타량이 한번에 가지 않습니다.
>
> 가장 좋은방법은 1024Byte 단위로 잘라서 차례차례 보내는 게 좋을 듯 합니다.
>
> 물론 이때로 Client와 Server간에 핸드셰이킹을 해야 겠죠....
>
> 핸드셰이킹이란 간단히 말하면...
>
> 너데이타 줬냐 그래 나 받았다 다므것 줘라 하는 것이죠...
>
> 그럼 이만..
0
0
삭제
수정
댓글
박서규
•
2000.08.19 04:07
보내는 측에서 일방적을 보내면 당연히 죽습니다...
방법은 이대선님의 의견대로 수신했냐라는 신호를 받아야하구요..
그런데 이렇게 하다보면 TCP의 특성상 속도저하현상이 일어납니다.
그래서 이런방법도 있지않을까 해서요..
보내실때 For문안에 Sleep문으로 약간의 시간지연을 시켜보세요..
그런데 이의 경우는 UDP상의 RTP구현시에 이용하는건데요..
수신패킷의 앞부분에 time stamp와 sequantial no등...을 적어서 같이
보내면 받는측에서는 reconstruct를 하게됩니다.
그래서 팻킷의 손실이 발생되면 해당패킷의 재전송과 속도를 낮춰달라는
신호(마치 RTCP같군요...)를 보내주면 보내는 측에서는 속도를 낮추는거죠..
그런데 제가 해보니 쓰레드를 썼을때, 더 효과적인 프로그램이 되더군요..
하지만 TCP를 쓰는경우 패킷의 손상이 아닌 버퍼의 넘침문제가 발생되므로
이 방법은 옳지 않을수도 있습니다.
하지만 이런방법을 쓰는경우 TCP 보다도 2배의 속도가 되더군요..
물론 전송제어를 정확히 해야겠죠..
0
0
삭제
수정
댓글
이대선
•
2000.08.18 21:17
델초 wrote:
> 답변 감사드립니다.
>
> 제경우는 약간 다른것 같거든요(제가 질문을 잘못했나봅니다.)
> Socket.SendBuf를 사용하긴 하지만 데이타를 한번에 많이 보내는건 아니구요 여러개의 데이터를 보내고 있죠. 근데 그중에 몇개를 보내지 못하거든요. 물론 한개한개 보낼때는 잘 가구요.
>
> 예를 들자면 a[1],a[2],a[3],a[4],a[5],a[6],a[7] 이라는 데이터를 보낼때 한 개씩보내면 잘 가는데 for문을 이용해서 보내면 데이터 몇개가 빠진다는거죠.(버퍼가 초과해서리...)
>
> 이건 어떻게 해결해야되나여~ 갈켜주세용~
for문을 사용한다는 것은 한번에 많이 보내는 것과 동일하다고 생각 되네요..
for 루프를 돌리지 말고 핸드셰이킹이 필요할 듯 하네요..
1. 먼저 a[1]을 주고 a[1]을 받았다면 다시 다음것을 달라는 특수코드를 만들던가 해서 응답을 다시주면...
2. a[2]를 주어야 겠죠.. 이렇게 이루어 져야만 data를 잊어 버리지 않겠죠...
저는 data의 신뢰도를 높이기 위해 저는 다음과 같이 사용 합니다.
----------------------------------------------------------------
시작코드 #02 | data의 순서 | 실제data | 끝코드 #03 | 첵섬 |
----------------------------------------------------------------
받았다면 응답의 코드
-----------------------------------------
시작코드 #02 | data의 순서 | #03 | 첵섬 |
-----------------------------------------
첵섬을 넣어도 되고 않넣어도 된다고 생각 합니다.
첵섬을 #02 부터 #03 까지 더한값을 말하죠...
혹시나 깨진 중간에 data가 있을 경우에 첵섬을 사용합니다.
그리고 물론 첵섬이 #02 나 #03 이 나올 때도 있습니다.
이때는 비트반전을 시켜야 겠죠...
물론 data를 주고 몇초가 지난 다음 응답이 없다면 다시 보내야 겠죠...
응용해서 사용해 보세요...
그럼 좋은 코딩하세요..
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
김동식
2000.08.18 20:41
0
COMMENTS
/
0
LIKES
dll 파일을 실행하면 run time error가 발생합니다
홍기식
•
2000.08.18 20:35
1
COMMENTS
/
0
LIKES
[일반] 변수의 동적 선언에 대해서..
구창민
•
2000.08.18 20:58
홍기식 wrote: > 안녕하세요.. 초보 Delphi사용자입니다. 예전에 pascal을 사용하다보니 Delphi를 > 계속...
강길남
•
2000.08.18 20:37
1
COMMENTS
/
0
LIKES
[급]문자열을 날짜형으로 바꾸어서 날짜계산할려고 합니다.
이대선
•
2000.08.18 20:47
강길남 wrote: > 1. c_result_date := StrToDateTime(Result_date); > 2. cut_napip_date := StrToDateTi...
황현
•
2000.08.18 20:27
3
COMMENTS
/
0
LIKES
TImage 에서 tif 파일을 보려면 어떻게 합니까?
최용일
•
2000.08.19 08:51
안녕하세요. 최용일입니다. 자료실에 있는 GraphicEx 라이브러리를 설치하세요. ^^ 항상 즐코하세요....
황현
•
2000.08.20 00:13
최용일 wrote: > 안녕하세요. 최용일입니다. > > 자료실에 있는 GraphicEx 라이브러리를 설치하세요. ...
Beholder
•
2000.08.22 18:42
GraphicEx 라이브러리중에 GraphicConfiguration.inc란 파일이 있습니다. 이 파일을 텍스트편집기.. 노...
류동기
2000.08.18 20:19
0
COMMENTS
/
0
LIKES
(왕초보)mainmenu에 focus지정하기
델초
•
2000.08.18 19:46
4
COMMENTS
/
0
LIKES
소켓버퍼 초기화?
Socket.SendBuf를 이용해서 데이터를 보내는데 중간에 버퍼가 초과해서 데이터가 가질 않습니다. 어떻게 해결해야하는지... 소켓버퍼를 초기화하면 될런지? 소켓버퍼를 초기화 하는방법은 무엇인지 알고싶습니다. 아님 다른 방법이라도 알...
이대선
•
2000.08.18 20:13
델초 wrote: > > Socket.SendBuf를 이용해서 데이터를 보내는데 중간에 버퍼가 초과해서 > 데이터가 ...
델초
•
2000.08.18 20:58
답변 감사드립니다. 제경우는 약간 다른것 같거든요(제가 질문을 잘못했나봅니다.) Socket.SendBuf를 ...
박서규
•
2000.08.19 04:07
보내는 측에서 일방적을 보내면 당연히 죽습니다... 방법은 이대선님의 의견대로 수신했냐라는 신호를 받...
이대선
•
2000.08.18 21:17
델초 wrote: > 답변 감사드립니다. > > 제경우는 약간 다른것 같거든요(제가 질문을 잘못했나봅니다.) ...
왕초보
2000.08.18 19:31
0
COMMENTS
/
0
LIKES
ADO로 EXCEL화일 읽어올때.
jeyun
•
2000.08.18 19:19
1
COMMENTS
/
0
LIKES
폼이 갑자기 실행이 안됩니다... 알려주세요
최석기
•
2000.08.18 21:07
jeyun wrote: > 잘 되던 form 화면 실행이 갑자기 안됩니다. > 클릭을 하면 pas 코드만 보이고 폼이 실행...
이태수
2000.08.18 19:09
0
COMMENTS
/
0
LIKES
Win95상에서의 퀵레포트 오류처리의 건
김길남
•
2000.08.18 19:09
1
COMMENTS
/
0
LIKES
Win98 태스크바의 오른쪽 영역..
이대선
•
2000.08.18 20:03
김길남 wrote: > Win98 태스크바의 오른쪽 영역.. > > 그러니깐 시계도 있고, 델파이 Clinet/Server를 ...
송지웅
•
2000.08.18 19:02
1
COMMENTS
/
0
LIKES
pc 와 OMR_card_reader기 사이에서의 data 전송에서 질문..
이경문
•
2000.08.19 05:16
쩝, 길길이입니다. 한 5년전에 OMR Read를 제어해 봐서 지금은 거의 기억이 나지 않네요. 그때 제가 본 ...
델초보
•
2000.08.23 04:16
1
COMMENTS
/
0
LIKES
이미지를 방향키에 따라 움직이게 하려면?
이대선
•
2000.08.23 04:17
델초보 wrote: > 델초보임다.......... > > 이미지가 방향키에 따라 움직이도록 하고파요... > > 그...
장웅철
•
2000.08.18 18:55
2
COMMENTS
/
0
LIKES
그림화일의 해상도가 낮아요?
이대선
•
2000.08.18 19:23
장웅철 wrote: > > 델파이로 프로그램을 만들다 보면 배경화면 이라든지 > 스플래시 화면을 붙이게 ...
이대선
•
2000.08.18 19:26
image콤퍼넌트에 Transparent 를 False로 바꾸고 해보세요..
손정현
2000.08.18 18:53
0
COMMENTS
/
0
LIKES
[긴급] QReport에서 서로다른양식출력방법?
김재현
•
2000.08.18 18:47
3
COMMENTS
/
0
LIKES
시리얼통신에서 데이터를 받을 때.
이대선
•
2000.08.18 19:19
김재현 wrote: > 안녕하세요. > 저는 초보인데요. 시리얼 통신을 하다가 궁금한 점이 있어서요. > > ...
김재현
•
2000.08.18 19:54
제가 정확하게 질문을 못한것 같군요. 시리얼 통신에서 데이터를 주고 받고 하는데, 받는 것에서 들어온...
이대선
•
2000.08.18 20:22
김재현 wrote: > 제가 정확하게 질문을 못한것 같군요. > > 시리얼 통신에서 데이터를 주고 받고 하는...
호야
•
2000.08.18 18:34
1
COMMENTS
/
0
LIKES
문자열중에 내가원하는 문자열이 있는지 알고싶을때.
최석기
•
2000.08.18 19:07
호야 wrote: > 예) '이곳을 누르시면 옛 통합게시판 Q&A를 보실 수 있습니다.'에서 > '통합게시판'이라는...
알로에
•
2000.08.18 18:29
1
COMMENTS
/
0
LIKES
02 라는 문자를 한 바이트로 만들어서 전송할수 있을까요?
김재현
•
2000.08.18 19:02
알로에 wrote: > 02,03,32,34..... > 이런문장들을 컴마는 분리하는데 쓰이고 > 저위에 숫자들은 16진수...
철
2000.08.18 18:22
0
COMMENTS
/
0
LIKES
oracle에 대한 고수님 답변부탁합니다!
김계성
2000.08.18 12:21
0
COMMENTS
/
0
LIKES
어떠게 하는 거지여?...TeamSource
[델파이]
2000.08.18 10:18
0
COMMENTS
/
0
LIKES
시작 프로그램으로 등록..
델초
2000/08/18 19:46
Views
638
Likes
0
Comments
4
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
>
> Socket.SendBuf를 이용해서 데이터를 보내는데 중간에 버퍼가 초과해서
> 데이터가 가질 않습니다. 어떻게 해결해야하는지...
>
> 소켓버퍼를 초기화하면 될런지? 소켓버퍼를 초기화 하는방법은 무엇인지 알고싶습니다.
> 아님 다른 방법이라도 알려주세요.
>
> 고수님들의 답변을 기다리며....
SendBuf로는 많은 데이타량이 한번에 가지 않습니다.
가장 좋은방법은 1024Byte 단위로 잘라서 차례차례 보내는 게 좋을 듯 합니다.
물론 이때로 Client와 Server간에 핸드셰이킹을 해야 겠죠....
핸드셰이킹이란 간단히 말하면...
너데이타 줬냐 그래 나 받았다 다므것 줘라 하는 것이죠...
그럼 이만..