소켓통신으로 웹과 연동은 어떻게 해야 하는지 궁금합니다.

익명 사용자의 이미지

안녕하세요 초보 개발자 입니다.
문서를 찿다 찿다 ...못 찿고 여기에 여쭈어 봅니다.
제가 하고자 하는 것은 아래와 같은데요..
질문의 요지는
****************************************
소켓통신 connect(web_socket,.....)//80포트
<질문1>이 명령어로 아파치 서버와 통신을 할 수 있는가 하는 것입니다.
<질문2> 그리고 가능하다면...일단 주고받는 protocol(즉 길이 정보)가 문
제가 되는데..얼마큼 write()하고 read()해야 하는지 정보는 아파치의 소
스를 보아야 할 듯 한데...어디에서 봐야 하는지..
알고 싶습니다.
************************************************

안녕하세요...소켓통신의 초보 개발자입니다.

현재 폰과 서버(아파치+php)와의 웹접속으로 프로그램을 완성하였습니다

폰이 아파치에게 query스트링을 날려주면
ex) "GET /~계정/XXXXXX HTTP/1.0
Host 211.55.45.45
Accept */*
User-Agent HTTP Lib Version 0.6"
이렇게 날려 줍니다.
그러면 서버는 폰에게
ex)"HTTP/1.1 200 OK
Date Thu, 12 Sep 2002 103350 GMT
Server Apache/1.3.20 (Unix) Resin/2.0.5 PHP/4.1.1
mod_ssl/2.8.4 OpenSSL/0.9.6a X-Powered-By PHP/4.1.1
Connection close
Content-Type text/html
XXXXX(데이터)"
이렇게 header를 넘겨주고 넘겨 받으면서 connetion을 끊죠(http
니깐)

이런 곳에서
폰(웹) -----------소켓통신서버-------------웹서버(아파
치+PHP)
<--> 소켓1 , 소켓2 <-->
이런 구조를 생각했습니다 (즉. 소켓1,2가 공유데이터(쿼리+웨서버가 내
려주는 데이터)를 가진다)
그래서 구현을 요약하면.
main()
{
int ph_s=socket(..);
int web_s=socket(...);
char *com_buff;

bind(ph_s,....);
listen(ph_s,100);
accept(ph_s,...); //폰에서 접속요청.
com_buff=read(ph_s,폰으로 부터 요청 데이터를 받는다);

connect(web_s,웹서버주소+포트80...); //<==질문1..이렇
게 하면 웹과 통신이 가능한가요?
write(web_s,com_buff);
com_buff=read(web_s,웹으로부터 데이터를 받는다);

write(ph_s,com_buff);

close(web_s);
close(ph_s);
}

이렇게 구현하면 되는 것인지... 경험이 없어서.. 확신할 수가 없네요.

죄송하지만..어디를 찿아야 하는지 만이라도 부탁드리겠습니다
그럼 이만..꾸벅

익명 사용자의 이미지

http//kldp.org/script/bbs/read.php?table=qa2&no=4941&o[sc]=a&o[ss]
=proxy&o[st]=a&o[at]=s&o[sct]=s&o[stt]=s

익명 사용자의 이미지

죄송하지만...배성환 님이 알려주신 프락시 서버가 제가 여쩌어 본것과
같은 시나리오 인지..다시 한번 여쭈어 봅니다.

먼저 도움을 청하고자 하는것은
│ 핸드폰(웹)[brew]<--->소켓1 ,소켓2<--->웹서버(아파치)
│ 이런 구조를 만들려구 하는데
소켓2와 웹서버 사이에서는 html헤더가 붙습니다.
즉 [html헤더][실데이터]
여기에서

헤더 길이와 [실데이터]길이를 구하고자 하는데..
 
영 문서를 못 &#52287;겠습니다....어떻게 &#52287;을수 있죠??
 그래야만 recv(,,길이)를 정확하게 할 수 있을텐데요..블럭이 될텐데 요.
 
조금더 구체적으로 말하면..
 
 
 
    핸드폰(웹헤더) <------>  서버는(아파치)+php
          결국 http 통신이 서로 이루어 지고 있습니다.
   그런데 이 사이에다가 socket통신을 하는 프로그램을 삽입하려구 합니
다.
   즉
     핸드폰(웹)<--->소켓1 ,소켓2<--->웹서버(아파치)
   이런 구조를 만들려구 하는데
예를 들면---->      
  폰이    아파치에게 query스트링을 날려주면
     ex)  "GET /~계정/XXXXXX  HTTP/1.0   
             Host 211.55.45.45
             Accept */*
             User-Agent HTTP Lib Version 0.6"
           이렇게 날려 줍니다.
      그러면 서버는 폰에게
       ex)"HTTP/1.1 200 OK 
             Date Thu, 12 Sep 2002 103350 GMT
             Server Apache/1.3.20 (Unix) Resin/2.0.5 PHP/4.1.1 
mod_ssl/2.8.4 OpenSSL/0.9.6a X-Powered-By PHP/4.1.1
            Connection close
            Content-Type text/html
            XXXXX(데이터)"
       이렇게 header를 넘겨주고 넘겨 받으면서 connetion을 끊죠(http니
깐)
 
 이런 곳에서
              폰(웹) -----------소켓통신서버-------------웹서버(아파
치+PHP)
                             <--> 소켓1 ,  소켓2  <-->
이런 구조를 생각했습니다  (즉. 소켓1,2가 공유데이터(쿼리+웨서버가 내
려주는 데이터)를 가진)
 그래서 구현을 요약하면.
        main()
       {
              int ph_s=socket(..);
              int web_s=socket(...);
              char *com_buff;
 
             bind(ph_s,....);
             listen(ph_s,100);
             accept(ph_s,...);  //폰에서 접속요청.
               com_buff=read(ph_s,폰으로 부터 요청 데이터를 받는다);
 
             connect(web_s,웹서버주소+포트80...);  //<==질문1..이렇
게 하면 웹과 통신이 가능한가요? 
                write(web_s,com_buff); 
                com_buff=read(web_s,웹으로부터 데이터를 받는다);  
 
                write(ph_s,com_buff);
 
             close(web_s); 
             close(ph_s);
       }             
 
이렇게 구현하면 되는 것인지... 경험이 없어서.. 확신할 수가 없네요.
 
조언을 부탁드립니다.
익명 사용자의 이미지

흠.. 정확하게 알고 계신듯 한데 어려운점이 있나요?

말씀하신 형태가 맞고 그렇게 가능합니다..

제작은 HTTP 클라이언트(서버가 아니고) 소스를 참고 하시면 되구요..
거기에 일반적 서버가 붙어 있는 형태면 되는겁니다.

즉,

부루와 통신할 서버 모듈 + HTTP 클라이언트(원하는 용도만 가능하면 되
니 엄청 작게 되겠죠)

정도면 되겟네요..

뭐 상용화 제품이면 암호화 해야 겠지만 구현은 이정도면 충분인듯..

어렵지 않은...듯...

이런 구조는 WAP 구조와 어떻게 보면 비슷합니다..

WAP 소스를 보는것도 많은 참고가 되겠네요..(WAP GATEWAY쪽)

그럼.

익명 사용자의 이미지

예 답변 감사드립니다
지금 구현 중이구요..
그런데 문제가 하나 있습니다.

여기에서 폰이 한개가 아니 잖아요..물론 웹서버는 한개지만^^*

그래서 fork()나 select를 사용해야 할 듯 한데...
구조를 잡기가 힘드네요.....
어떻게 잡아야 무리가 없을지...조언 부탁드립니다....

그리고 말씀 하신 wap-gateway쪽 소스는 어디서 구하는 거죠..
고글에서 찿고 있는데..영 모르겠네요^^*

그럼 이만 줄이겠습니다.

부루와 통신할 서버 모듈 + HTTP 클라이언트(원하는 용도만 가능하면 되
니 엄청 작게 되겠죠)
이런 구조는 WAP 구조와 어떻게 보면 비슷합니다..
WAP 소스를 보는것도 많은 참고가 되겠네요..(WAP GATEWAY쪽)

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.