제가 생각한 HTTP통신은 TCP통신에 HTTP해더를 얹어서 보내는 거라구 생각합니다.

일단 클라이언트 소스입니다

//---------------------------------------------------------------------------

#include <vcl.h>
#include <winsock2.h>
#include <stdlib.h>
#include <stdio.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused

#define BUFSIZE 102400


void err_quit(char *msg)
{
 LPVOID lpMsgBuf;
 FormatMessage(
  FORMAT_MESSAGE_ALLOCATE_BUFFER|
  FORMAT_MESSAGE_FROM_SYSTEM,
  NULL,WSAGetLastError(),
  MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),
  (LPTSTR)&lpMsgBuf,0,NULL);

 MessageBox(NULL, (LPCTSTR)lpMsgBuf, msg, MB_ICONERROR);
 LocalFree(lpMsgBuf);
 exit(-1);
}

void err_display(char *msg)
{
 LPVOID lpMsgBuf;
 FormatMessage(
  FORMAT_MESSAGE_ALLOCATE_BUFFER|
  FORMAT_MESSAGE_FROM_SYSTEM,
  NULL,WSAGetLastError(),
  MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),
  (LPTSTR)&lpMsgBuf,0,NULL);

 printf("[%s] %s",msg,(LPCTSTR)lpMsgBuf);
 LocalFree(lpMsgBuf);
}

int recvn(SOCKET s, char *buf, int len, int flags)
{
 int received;
 char *ptr = buf;
 int left = len;

 while(left>0)
 {
  received = recv(s, ptr, left, flags);
  if(received == SOCKET_ERROR)
   return SOCKET_ERROR;
  else if(received==0)
   break;
  left -= received;
  ptr += received;
 }

 return (len - left);
}


int main(int argc, char* argv[])
{
 int retval;

 WSADATA wsa;
 if(WSAStartup(MAKEWORD(2,2),&wsa)!=0)
  return -1;


 

 SOCKET sock = socket(AF_INET, SOCK_STREAM,IPPROTO_TCP);
 if(sock == INVALID_SOCKET) err_quit("socket()");

 

 

 SOCKADDR_IN serveraddr;
 serveraddr.sin_family = AF_INET;
 serveraddr.sin_port = htons(80);
 serveraddr.sin_addr.s_addr = inet_addr("192.168.0.5");
 retval = connect(sock, (SOCKADDR *)&serveraddr,
     sizeof(serveraddr));
 if(retval == SOCKET_ERROR) err_quit("connect()");


 //데이터 통신에 사용할 변수
 
 char buf[BUFSIZE+1];
 int len;

 //서버와 데이터 통신
 while(1)
 {
  //데이터 입력
  memset(buf, 0x00, sizeof(buf));

    sprintf(buf,
    "GET http://mdms.go.kr:8088/TestServlet HTTP/1.1\r\n"
    "Connection: Keep-Alive\r\n"
    "Host: localhost\r\n"
    "Accept: text/html\r\n"
    "\r\n");  


  len = strlen(buf); 
  //데이터 보내기
  retval = send(sock, buf, len, 0);
  if(retval == SOCKET_ERROR)
  {
   err_display("send()");
   break;
  }
  
  printf("[TCP 클라이언트] %d 바이트를 보냈습니다.\n",retval);
  printf("[보낸 데이터] \n%s \n",buf);

  //데이터 받기

  
  retval = recv(sock,buf,BUFSIZE,0);
  if(retval == SOCKET_ERROR)
  {
   err_display("recv()");
   break;
  }
  else if(retval == 0)
  {
   break;
  }

  //받은 데이터 출력

  buf[retval] = '\0';
  printf("[TCP 클라이언트] %d 바이트를 받았습니다. \n",retval);
  printf("[받은 데이터] %s \n",buf);

 }

 //closesocket()

 closesocket(sock);


 WSACleanup();

 return 0;
}

//---------------------------------------------------------------------------

서블릿을 구현한 부분 입니다. 웹서버는 WebtoB 입니다.



import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class TestServlet extends HttpServlet {

 /**
  * The doPost method of the servlet. <br>
  *
  * This method is called when a form has its tag value method equals to post.
  *
  * @param request the request send by the client to the server
  * @param response the response send by the server to the client
  * @throws ServletException if an error occurred
  * @throws IOException if an error occurred
  */
 
 
 public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  PrintWriter out = response.getWriter();
  out.println("<html>");
  out.println("<head><title>Form</title></head>");
  out.println("<body>");
    
  out.println("KLM");
  out.println("</body></html>");
 }


 public void doGet(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException {
  // TODO Auto-generated method stub
    
  arg1.setContentType("text/html");
  PrintWriter out = arg1.getWriter();
  
  out.println("<html>");
  out.println("<head><title>FormServlet</title></head>");
  out.println("Using protocol: " + arg0.getProtocol() + "<br>");
  
  out.println("The URL you requested is");
  String my_url =
   arg0.getScheme() + "://" +
   arg0.getServerName() + ":" + arg0.getServerPort() +
   arg0.getServletPath();
   
  out.println(my_url + "<br>");
  out.println("Your com is " + arg0.getRemoteHost() + "<br>");
  out.println("<hr>");
  
  Enumeration headerNames = arg0.getHeaderNames();
  while (headerNames.hasMoreElements())
  {
   String headerName = (String)headerNames.nextElement();
   String headerValue = arg0.getHeader(headerName);
   out.println("Header:" + headerName + " = " + headerValue + "<br>");
  }
  out.println("<hr>");
  
  out.println("<FORM METHOD=\"post\" ACTION=\"" + my_url + "\">");
  out.println("<br>");
  
  out.println("</FORM>");
  out.println("</body></html>");
 }


}



결과 화면을 첨부하겠습니다. 조언 부탁드립니다

이 게시물을..