W5100 웹서버 질문드립니다.

#1

W5100으로 웹서버 구현중입니다.
간단하게 HTM과 이미지 올리는걸 테스트중입니다.

-Connect(HTM 전송)
브라우저에서 GET-HTM 데이터 수신 하고 여기에 대해 응답합니다.

-Close (이부분에서 어떻게 끊어야 하는지요?.. 다른 서버에서와의 데이터를 캡쳐해보면 FIN 플래그로 연결을 끊던데
W5100 에서는 RST 로 연결을 끊던더군요…)

-Connect(이미지데이터 전송)
그리고 GET-Image 데이터를 수신하고 여기에 이미지 데이터를 응답합니다.

-Colose

콘넥션타입이 Keep-ALive 가 아닌 상태에서는 GET-HTM 과 GET-Image 사이에 접속을 끝고 다시 연결 후 이미지 데이터를 보내야 하는걸로 아는데 어떻게 연결을 끊어야 하는지 모르겠습니다.
설명을 어떻게 해야할지… 이해가 되셨는지 모르겠네요.

#2

서버포트 80을 몇채널 사용하시는지요?
서버채널을 많이 사용할수록 원활하게 동작합니다.
질문처럼 GET-HTM 과 GET-GIF를 한 채널을 이용할 경우 연결을 끊고 다시 접속해야 하는 부담이 있으며, 접속이 제대로 일워진다는 보장도 없습니다. 일반적으로 Browser는 다채널을 이용하여 URI를 요청하며 일정 요청 후 더 이상 요청하지 않습니다.(Explore인 경우 경험상 3번정도 요청후 응답없으면 엑박입니다.)

TCP의 접속을 끊을 때는 disconnect()함수를 이용하여 socket을 close합니다.
TCP에서 close()함수는 강제로 즉 fin없이 socket을 close합니다. 이는 상대방의 응답지연이 발생한 경우 타임아웃까지 기달리지 못하는 상황에서 사용하시면 됩니다.

#3

답변 감사합니다.

현재 1개 포트를 80으로 사용합니다.
80번 포트를 여러개 사용할 수도 있나요?
예를 들어 W5100은 4개 소켓이 있는데 이중 3개를 80번으로 설정하면 브라우저에서 접속할때
이 3개의 포트로 번갈아가면서 접속한다는 말씀이신가요?
제가 맞게 이해 한건가요?

그리고 HTM 데이터와 IMAGE 사이에 tcp_discon() 으로 접속을 끊으면 약 2~3초가량 지연 후 이미지가 올라옵니다.
이게 재접속하는데 걸리는 시간이겠죠?

한개 포트로 Keep-Alive 방식으로 사용하면 접속을 끊지 않고 계속 보낼 수 있지 않을까요?
간단히 테스트 해봤는데 이 방식이 잘 안되던데 말이죠?
여러 클라이언트가 접속하진 않습니다.

#4

[quote]현재 1개 포트를 80으로 사용합니다.
80번 포트를 여러개 사용할 수도 있나요?
예를 들어 W5100은 4개 소켓이 있는데 이중 3개를 80번으로 설정하면 브라우저에서 접속할때
이 3개의 포트로 번갈아가면서 접속한다는 말씀이신가요?
제가 맞게 이해 한건가요?[/quote]
네 맞습니다. 3개의 채널을 80포트 서버로 사용하시면 됩니다.

현재 제공되는 Webserver 코드는 Keep-Alive 방식을 사용하지 않습니다.
일반적으로 Browser에서 각 URI를 독립채널로 요청후 close하기 하기때문에 Keep-Alive 방식으로 되는지는 저도 궁금하네요.