aboutsummaryrefslogtreecommitdiff
path: root/samples/udp/udpclient.c
diff options
context:
space:
mode:
Diffstat (limited to 'samples/udp/udpclient.c')
-rw-r--r--samples/udp/udpclient.c110
1 files changed, 110 insertions, 0 deletions
diff --git a/samples/udp/udpclient.c b/samples/udp/udpclient.c
new file mode 100644
index 0000000..c475244
--- /dev/null
+++ b/samples/udp/udpclient.c
@@ -0,0 +1,110 @@
+/*
+
+udpclient.c
+
+SOAP-over-UDP demo client
+
+--------------------------------------------------------------------------------
+gSOAP XML Web services tools
+Copyright (C) 2001-2004, Robert van Engelen, Genivia, Inc. All Rights Reserved.
+This software is released under one of the following two licenses:
+GPL or Genivia's license for commercial use.
+--------------------------------------------------------------------------------
+GPL license.
+
+This program is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2 of the License, or (at your option) any later
+version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+Place, Suite 330, Boston, MA 02111-1307 USA
+
+Author contact information:
+engelen@genivia.com / engelen@acm.org
+--------------------------------------------------------------------------------
+A commercial use license is available from Genivia, Inc., contact@genivia.com
+--------------------------------------------------------------------------------
+*/
+
+#include "soapH.h"
+#include "udp.nsmap"
+
+int main(int argc, char **argv)
+{ struct soap soap;
+ struct SOAP_ENV__Header header;
+ struct wsa__EndpointReferenceType replyTo;
+ char *res;
+ char *mid1 = "id1";
+ char *mid2 = "id2";
+
+ if (argc > 1)
+ mid1 = argv[1];
+ if (argc > 2)
+ mid2 = argv[2];
+
+ soap_init(&soap);
+
+ soap.send_timeout = 1;
+ soap.recv_timeout = 1;
+
+ /* To compress the request message (compile with -DWITH_GZIP):
+ soap_set_omode(&soap, SOAP_ENC_ZLIB);
+ */
+
+ /* To transmit DIME attachments:
+ soap_set_dime(&soap);
+ soap_set_dime_attachment(&soap, "abc", 3, "cid:abc", "text/xml", 0, NULL);
+ */
+
+ /* To transmit MIME attachments:
+ soap_set_mime(&soap, NULL, NULL);
+ soap_set_mime_attachment(&soap, "abc", 3, SOAP_MIME_7BIT, "text/xml", "cid:abc", NULL, NULL);
+ */
+
+ /* Prepare SOAP Header */
+ soap_default_SOAP_ENV__Header(&soap, &header);
+ soap.header = &header;
+
+ soap_default_wsa__EndpointReferenceType(&soap, &replyTo);
+ replyTo.Address = "http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous";
+
+ /* Set WS-Addressing elements for request-response unicast */
+ header.wsa__MessageID = mid1;
+ header.wsa__To = "http://genivia.com/udp/server";
+ header.wsa__Action = "http://genivia.com/udp/echoString";
+ header.wsa__ReplyTo = &replyTo;
+
+ /* Make request-response call */
+ if (soap_call_ns__echoString(&soap, NULL, NULL, "hello world!", &res))
+ { if (soap.error == SOAP_EOF && soap.errnum == 0)
+ printf("Timeout: message probably already delivered\n");
+ else
+ soap_print_fault(&soap, stderr);
+ }
+ else
+ printf("UDP server response: %s\n", res);
+
+ /* Reset the SOAP Header */
+ soap_default_SOAP_ENV__Header(&soap, &header);
+ soap.header = &header;
+
+ /* Set WS-Addressing elements for one-way unicast */
+ header.wsa__MessageID = mid2;
+ header.wsa__To = "http://genivia.com/udp/server";
+ header.wsa__Action = "http://genivia.com/udp/sendString";
+
+ /* Send one-way message */
+ if (soap_send_ns__sendString(&soap, NULL, NULL, "hello world!"))
+ soap_print_fault(&soap, stderr);
+
+ soap_end(&soap);
+ soap_done(&soap);
+
+ return 0;
+}