WIZnet Developer Forum

W5100 웹서버 질문드립니다.

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

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

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

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

-Colose

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

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

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

답변 감사합니다.

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

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

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

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

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

Copyright © 2017 WIZnet Co., Ltd. All Rights Reserved.