TEXT

웹서비스와 소켓통신(클라이언트 비교)

앱팀장 2008. 10. 14. 11:01

웹서비스 방식의 호출

ex> WebServiceName.WebMethodName(Parameter1)


웹참조 파일에 설정되어 있는 웹서비스 정보(자동으로 생성)

 public WebServiceName() {
            this.Url = "http://111.111.111.111:0000/WebServiceName.asmx";
        }
<= 호출하려는 웹서비스 주소와 포트번호와 웹서비스명 정보

 

웹참조 파일에 설정되어 있는 웹메소드 정보(자동으로 생성)
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://111.111.111.111:0000/WebMethodName", RequestNamespace="http://111.111.111.111:0000/", ResponseNamespace="http://111.111.111.111:0000/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
<= 호출하려는 웹메소드의 웹서비스 정보와 Request/Response를 주고 받을 웹주소와 포트 정보
        public type WebMethodName(type Parameter1) {
            object[] results = this.Invoke("WebMethodName", new object[] {
                        Parameter1});
            return ((type)(results[0]));
        }
<= 호출하려는 웹 메소드의 형식(매개변수의 타입과 갯수, 리턴값의 타입 지정)


소켓통신 방식의 호출

: 바이트 스트림기반의 호출이므로 데이터를 전송하기 위해 주고 받는 데이터의 크기를 정의.
        byte[] Parameter = new byte[1024];
: 전송하는 Parameter의 크기를 코드에서 정의
        byte[] returnValue = new byte[1024];
: 리턴받는 리턴값을 받을의 크기를 코드에서 정의
        IPAddress ipaddr = IPAddress.Parse("111.111.111.111");
: Socket에 설정할 서버주소 코드에서 정의
        IPEndPoint endpoint = new IPEndPoint(ipaddr,:0000);
: Socket에 설정할 포트번호 코드에서 정의
        csocket = new Socket(AddressFamily.InterNetwork ,SocketType.Stream , ProtocolType.Tcp);
: 서버주소의 형식, 전송의 형태, 프로토콜을 정의
        csocket.Connect(endpoint);
: 지정한 서버주소로 연결
        if (csocket.Connected)
: 연결 성공시
        {

   try
   {
    sData = System.Text.Encoding.UTF8.GetBytes(msg);
: 바이트 데이터를 인코딩(서버, 클라이언트 인코딩방식을 같게 설정하여야 함)
    csocket.Send(Parameter);
: 데이터 전송
    int rtnMsgLen = csocket.Receive(returnValue);
: 소켓에 저장된 리턴값을 수신
    rtnMsg = Encoding.Default.GetString(returnValue);
: 바이터 데이터인 리턴값을 디코딩

   }
   catch (Exception e)
   {
    inputStr = e.ToString(); ;
   }
   finally
   {
    csocket.Close();
: 컨넥션 종료
   }
        }
        else
        {
            rtnMsg = "N";
        }

        return rtnMsg;