<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://performiq.com/kb/index.php?action=history&amp;feed=atom&amp;title=TCP_Server_Examples</id>
	<title>TCP Server Examples - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://performiq.com/kb/index.php?action=history&amp;feed=atom&amp;title=TCP_Server_Examples"/>
	<link rel="alternate" type="text/html" href="https://performiq.com/kb/index.php?title=TCP_Server_Examples&amp;action=history"/>
	<updated>2026-05-18T22:00:57Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>https://performiq.com/kb/index.php?title=TCP_Server_Examples&amp;diff=1958&amp;oldid=prev</id>
		<title>PeterHarding at 23:15, 27 April 2008</title>
		<link rel="alternate" type="text/html" href="https://performiq.com/kb/index.php?title=TCP_Server_Examples&amp;diff=1958&amp;oldid=prev"/>
		<updated>2008-04-27T23:15:57Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 09:15, 28 April 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l223&quot;&gt;Line 223:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 223:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Python]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:Python]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Network&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;TCP/IP&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>PeterHarding</name></author>
	</entry>
	<entry>
		<id>https://performiq.com/kb/index.php?title=TCP_Server_Examples&amp;diff=1957&amp;oldid=prev</id>
		<title>PeterHarding at 23:14, 27 April 2008</title>
		<link rel="alternate" type="text/html" href="https://performiq.com/kb/index.php?title=TCP_Server_Examples&amp;diff=1957&amp;oldid=prev"/>
		<updated>2008-04-27T23:14:36Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 09:14, 28 April 2008&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Python Test Server=&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;=Python Test Server=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==A simple ECHO server=&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==A simple ECHO server&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=&lt;/ins&gt;=&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br/&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l221&quot;&gt;Line 221:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 221:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;//--------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;//--------------------------------------------------------------------&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Python]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:Network]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>PeterHarding</name></author>
	</entry>
	<entry>
		<id>https://performiq.com/kb/index.php?title=TCP_Server_Examples&amp;diff=1956&amp;oldid=prev</id>
		<title>PeterHarding: New page: =Python Test Server=  ==A simple ECHO server=  &lt;pre&gt; # cat svr.py  #!/usr/bin/env python   # Echo server program import socket  HOST = &#039;&#039;    # Symbolic name meaning the local host PORT = 9...</title>
		<link rel="alternate" type="text/html" href="https://performiq.com/kb/index.php?title=TCP_Server_Examples&amp;diff=1956&amp;oldid=prev"/>
		<updated>2008-04-27T23:14:07Z</updated>

		<summary type="html">&lt;p&gt;New page: =Python Test Server=  ==A simple ECHO server=  &amp;lt;pre&amp;gt; # cat svr.py  #!/usr/bin/env python   # Echo server program import socket  HOST = &amp;#039;&amp;#039;    # Symbolic name meaning the local host PORT = 9...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Python Test Server=&lt;br /&gt;
&lt;br /&gt;
==A simple ECHO server=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cat svr.py &lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
 &lt;br /&gt;
# Echo server program&lt;br /&gt;
import socket&lt;br /&gt;
&lt;br /&gt;
HOST = &amp;#039;&amp;#039;    # Symbolic name meaning the local host&lt;br /&gt;
PORT = 9578  # Arbitrary non-privileged port&lt;br /&gt;
&lt;br /&gt;
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)&lt;br /&gt;
&lt;br /&gt;
s.bind((HOST, PORT))&lt;br /&gt;
&lt;br /&gt;
s.listen(1)&lt;br /&gt;
&lt;br /&gt;
conn, addr = s.accept()&lt;br /&gt;
&lt;br /&gt;
print &amp;#039;Connected by&amp;#039;, addr&lt;br /&gt;
&lt;br /&gt;
while 1:&lt;br /&gt;
    data = conn.recv(1024)&lt;br /&gt;
    if not data: break&lt;br /&gt;
    conn.send(data)&lt;br /&gt;
&lt;br /&gt;
conn.close()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=C Client=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# cat tcp_client_tst.c&lt;br /&gt;
/*&lt;br /&gt;
 *      Author:  Peter Harding  &amp;lt;plh@performiq.com.au&amp;gt;&lt;br /&gt;
 *&lt;br /&gt;
 *          PerformIQ Pty. Ltd.&lt;br /&gt;
 *          Level 6, 6195,&lt;br /&gt;
 *          170 Queen Street,&lt;br /&gt;
 *          MELBOURNE, VIC, 3000&lt;br /&gt;
 *&lt;br /&gt;
 *          Phone:   03 9641 2222&lt;br /&gt;
 *          Fax:     03 9641 2200&lt;br /&gt;
 *          Mobile:  0418 375 085&lt;br /&gt;
 *&lt;br /&gt;
 *      Copyright (C) Peter Harding, 1997-2008&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
static char&lt;br /&gt;
        id[] = &amp;quot;@(#) [1.0.0] tcp_client_tst.c 05/03/2008&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/********************************************************************/&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
#include &amp;lt;signal.h&amp;gt;&lt;br /&gt;
#include &amp;lt;sys/time.h&amp;gt;&lt;br /&gt;
#include &amp;lt;string.h&amp;gt;&lt;br /&gt;
#include &amp;lt;errno.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdlib.h&amp;gt;&lt;br /&gt;
#include &amp;lt;unistd.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;sys/socket.h&amp;gt;&lt;br /&gt;
#include &amp;lt;fcntl.h&amp;gt;&lt;br /&gt;
#include &amp;lt;netdb.h&amp;gt;&lt;br /&gt;
#include &amp;lt;netinet/in.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
#define TCP            &amp;quot;tcp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
//--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
extern    int            errno;&lt;br /&gt;
&lt;br /&gt;
//--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
static    int            ierr;&lt;br /&gt;
&lt;br /&gt;
//--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
char *recv_host       = &amp;quot;plh&amp;quot;;&lt;br /&gt;
char *recv_service    = &amp;quot;dserver&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
long    the_address;&lt;br /&gt;
int     the_port          = 9578;&lt;br /&gt;
int     sfd               = -1;&lt;br /&gt;
&lt;br /&gt;
//--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
char* sock_send(char*);&lt;br /&gt;
void init(void);&lt;br /&gt;
&lt;br /&gt;
//--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
void init(void)&lt;br /&gt;
{&lt;br /&gt;
   struct hostent        *host_ent;&lt;br /&gt;
   struct servent        *serv_ent;&lt;br /&gt;
   struct sockaddr_in    sin;&lt;br /&gt;
&lt;br /&gt;
   u_short                b0, b1, b2, b3;&lt;br /&gt;
&lt;br /&gt;
   recv_host = &amp;quot;localhost&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
   fprintf(stderr, &amp;quot;recv_host = \&amp;quot;%s\&amp;quot;\n&amp;quot;, recv_host);&lt;br /&gt;
&lt;br /&gt;
   if ((host_ent = gethostbyname(recv_host)) == (struct hostent*)0 ) {&lt;br /&gt;
      fprintf(stderr, &amp;quot;Call failed\n&amp;quot;);&lt;br /&gt;
      exit(0);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   // fprintf(stderr, &amp;quot;Call -&amp;gt; %s\n&amp;quot;, host_ent);&lt;br /&gt;
&lt;br /&gt;
   b0 = *(host_ent-&amp;gt;h_addr_list[0] + 0) &amp;amp; 0xff;&lt;br /&gt;
   b1 = *(host_ent-&amp;gt;h_addr_list[0] + 1) &amp;amp; 0xff;&lt;br /&gt;
   b2 = *(host_ent-&amp;gt;h_addr_list[0] + 2) &amp;amp; 0xff;&lt;br /&gt;
   b3 = *(host_ent-&amp;gt;h_addr_list[0] + 3) &amp;amp; 0xff;&lt;br /&gt;
    &lt;br /&gt;
   the_address  = (b0 &amp;lt;&amp;lt; 24) + (b1 &amp;lt;&amp;lt; 16) + (b2 &amp;lt;&amp;lt;  8) + b3;&lt;br /&gt;
&lt;br /&gt;
   fprintf(stderr, &amp;quot;      name: %s\n&amp;quot;,  host_ent-&amp;gt;h_name);&lt;br /&gt;
   fprintf(stderr, &amp;quot;      type: %d\n&amp;quot;,  host_ent-&amp;gt;h_addrtype);&lt;br /&gt;
   fprintf(stderr, &amp;quot;     alias: %s\n&amp;quot;, *host_ent-&amp;gt;h_aliases);&lt;br /&gt;
   fprintf(stderr, &amp;quot;    length: %d\n&amp;quot;,  host_ent-&amp;gt;h_length);&lt;br /&gt;
   fprintf(stderr, &amp;quot;IP Address: %d.%d.%d.%d\n&amp;quot;,&lt;br /&gt;
         b0 &amp;amp; 0xff, b1 &amp;amp; 0xff, b2 &amp;amp; 0xff, b3 &amp;amp; 0xff);&lt;br /&gt;
&lt;br /&gt;
   if ((serv_ent = getservbyname(recv_service, TCP)) == (struct servent*)0 ) {&lt;br /&gt;
      exit(2);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   //the_port         = serv_ent-&amp;gt;s_port;&lt;br /&gt;
&lt;br /&gt;
   fprintf(stderr, &amp;quot;Got address 0x%08x\n&amp;quot;, the_address);&lt;br /&gt;
   fprintf(stderr, &amp;quot;Got port %d for %s\n&amp;quot;, the_port, recv_service);&lt;br /&gt;
&lt;br /&gt;
   //if ((sfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == 0 ) {&lt;br /&gt;
   if ((sfd = socket(AF_INET, SOCK_STREAM, 0)) == 0 ) {&lt;br /&gt;
      fprintf(stderr, &amp;quot;[initiateConnection] socket() failed (errno %d)&amp;quot;, errno);&lt;br /&gt;
      exit(3);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   fprintf(stderr, &amp;quot;@@@ socket fd = %d\n&amp;quot;, sfd );&lt;br /&gt;
&lt;br /&gt;
   memcpy(&amp;amp;sin.sin_addr.s_addr, host_ent-&amp;gt;h_addr, host_ent-&amp;gt;h_length);&lt;br /&gt;
   sin.sin_family      = AF_INET;&lt;br /&gt;
   sin.sin_port = htons (the_port);&lt;br /&gt;
   //sin.sin_addr.s_addr = the_address;&lt;br /&gt;
&lt;br /&gt;
   if ((ierr = connect(sfd, (struct sockaddr*)&amp;amp;sin, sizeof(struct sockaddr_in))) == -1) {&lt;br /&gt;
      fprintf(stderr,&lt;br /&gt;
         &amp;quot;[initiateConnection] connect() failed (errno %d)&amp;quot;, errno);&lt;br /&gt;
      exit(4);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   fprintf(stderr, &amp;quot;connected\n&amp;quot;);&lt;br /&gt;
}  // init&lt;br /&gt;
&lt;br /&gt;
//--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
char* sock_send(char *buf)&lt;br /&gt;
{&lt;br /&gt;
  int n;&lt;br /&gt;
&lt;br /&gt;
   //fprintf(stderr, &amp;quot;[sock_send] buf = \&amp;quot;%s\&amp;quot;\n\n&amp;quot;, buf);&lt;br /&gt;
&lt;br /&gt;
   n = write(sfd, buf, strlen(buf));&lt;br /&gt;
&lt;br /&gt;
   if ((n = read(sfd, buf, 1024)) == 0) {&lt;br /&gt;
         exit(0);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   buf[n] = &amp;#039;\0&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
   //fprintf(stderr, &amp;quot;\nbuf -&amp;gt; \&amp;quot;%s\&amp;quot;\n&amp;quot;, buf);&lt;br /&gt;
&lt;br /&gt;
   return buf;&lt;br /&gt;
}  // sock_send&lt;br /&gt;
&lt;br /&gt;
//--------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
main(argc, argv)&lt;br /&gt;
int argc;&lt;br /&gt;
char *argv[];&lt;br /&gt;
{&lt;br /&gt;
   char buf[1024];&lt;br /&gt;
   char *s;&lt;br /&gt;
   int i;&lt;br /&gt;
   int ds_idx;&lt;br /&gt;
   int serial;&lt;br /&gt;
&lt;br /&gt;
   init();&lt;br /&gt;
&lt;br /&gt;
   sprintf(buf, &amp;quot;REG|Sequence&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
   s = sock_send(buf);&lt;br /&gt;
&lt;br /&gt;
   ds_idx = atoi(s);&lt;br /&gt;
&lt;br /&gt;
   for (i = 0; i &amp;lt; 3; i++) {&lt;br /&gt;
      sprintf(buf, &amp;quot;GETN|%d&amp;quot;, ds_idx);&lt;br /&gt;
&lt;br /&gt;
      s = sock_send(buf);&lt;br /&gt;
&lt;br /&gt;
      serial = atoi(s);&lt;br /&gt;
&lt;br /&gt;
      fprintf(stderr, &amp;quot;serial -&amp;gt; \&amp;quot;%d\&amp;quot;\n&amp;quot;, serial);&lt;br /&gt;
      sleep(2);&lt;br /&gt;
   }&lt;br /&gt;
}  // main&lt;br /&gt;
&lt;br /&gt;
//--------------------------------------------------------------------&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>PeterHarding</name></author>
	</entry>
</feed>