diff --git a/Readme.md b/Readme.md
index 0d86e02fa00bb7c0d5a0ebed194aeb5d84c5abe4..410b7a58ac2f687ca0b664bdcac500c6630cc4f3 100644
--- a/Readme.md
+++ b/Readme.md
@@ -5,6 +5,69 @@
 getaddrinfo
 connect
 
+<!-- include (client.c lang=c) -->
+```c
+# include "die.h"
+# include <sys/types.h>
+# include <sys/socket.h>
+# include <netdb.h>
+# include <stdio.h>
+# include <unistd.h>
+
+int main() {
+    char *url = "www.fau.de";
+    char *port = "80";
+    struct addrinfo hints =
+        {
+        .ai_socktype = SOCK_STREAM,   // Nur TCP-Sockets
+        .ai_family   = AF_UNSPEC,     // Beliebige Adressfamilie
+        .ai_flags    = AI_ADDRCONFIG, // Nur Adresstypen für die auch ein lokales Interface existiert
+        }; // C: alle anderen Elemente der Struktur werden implizit genullt
+    
+    struct addrinfo *head;
+    int res = getaddrinfo(url, port, &hints, &head);
+    if(res) die_m(gai_strerror(res));
+    
+    // Liste der Adressen durchtesten
+    int sock;
+    struct addrinfo *curr;
+    for (curr = head; curr != NULL; curr = curr->ai_next) {
+        sock = socket(curr->ai_family, curr->ai_socktype, curr->ai_protocol);
+        if(sock == -1) {// Fehlerbehandlung
+        continue;
+        }
+        if (connect(sock, curr->ai_addr, curr->ai_addrlen) == 0)
+        break;
+        close(sock);
+    }
+    freeaddrinfo(head);
+    if (curr == NULL) die_m("Could not connect to server");
+
+    FILE *rx, *tx;
+    if( (rx = fdopen(sock, "r")) == NULL) die("fdopen");
+    int sock_copy = dup(sock);
+    if(sock_copy < 0) die("dup");
+    if( (tx = fdopen(sock_copy, "w")) == NULL ) die("fdopen");
+
+    //test it
+    fprintf(tx, "GET http://www.fau.de/index.html HTTP/1.1\r\n\r\n");
+    fflush(tx);
+    char *lineptr = NULL;
+    size_t lineSize = 0;
+    ssize_t strLen = 0;
+    strLen = getline(&lineptr, &lineSize, rx);
+    if(strLen < 0) {
+        if(ferror(rx)) die("getline");
+    }
+    printf("%s\n", lineptr);
+    free(lineptr);
+    
+    if(fclose(rx)) perror("fclose");
+    if(fclose(tx)) perror("fclose");
+}
+```
+<!-- /include -->
+
 ### server
 listen
 accept
diff --git a/Zettel.html b/Zettel.html
index c360d2eb7207dbcaf60a2452448e9362c96cc12f..8f12c4d028a9dd4c13a8ebce650bd229db86acb6 100644
--- a/Zettel.html
+++ b/Zettel.html
@@ -3,6 +3,67 @@
 <h3>client</h3>
 <p>getaddrinfo
 connect</p>
+<p>&lt;!-- include (client.c lang=c) --&gt;</p>
+<pre><code class="hljs language-c"><span class="hljs-meta"># <span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">"die.h"</span></span>
+<span class="hljs-meta"># <span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;sys/types.h&gt;</span></span>
+<span class="hljs-meta"># <span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;sys/socket.h&gt;</span></span>
+<span class="hljs-meta"># <span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;netdb.h&gt;</span></span>
+<span class="hljs-meta"># <span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;stdio.h&gt;</span></span>
+<span class="hljs-meta"># <span class="hljs-meta-keyword">include</span> <span class="hljs-meta-string">&lt;unistd.h&gt;</span></span>
+
+<span class="hljs-function"><span class="hljs-keyword">int</span> <span class="hljs-title">main</span><span class="hljs-params">()</span> </span>{
+    <span class="hljs-keyword">char</span> *url = <span class="hljs-string">"www.fau.de"</span>;
+    <span class="hljs-keyword">char</span> *port = <span class="hljs-string">"80"</span>;
+    <span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">addrinfo</span> <span class="hljs-title">hints</span> =
+        {</span>
+        .ai_socktype = SOCK_STREAM,   <span class="hljs-comment">// Nur TCP-Sockets</span>
+        .ai_family   = AF_UNSPEC,     <span class="hljs-comment">// Beliebige Adressfamilie</span>
+        .ai_flags    = AI_ADDRCONFIG, <span class="hljs-comment">// Nur Adresstypen für die auch ein lokales Interface existiert</span>
+        }; <span class="hljs-comment">// C: alle anderen Elemente der Struktur werden implizit genullt</span>
+    
+    <span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">addrinfo</span> *<span class="hljs-title">head</span>;</span>
+    <span class="hljs-keyword">int</span> res = getaddrinfo(url, port, &amp;hints, &amp;head);
+    <span class="hljs-keyword">if</span>(res) die_m(gai_strerror(res));
+    
+    <span class="hljs-comment">// Liste der Adressen durchtesten</span>
+    <span class="hljs-keyword">int</span> sock;
+    <span class="hljs-class"><span class="hljs-keyword">struct</span> <span class="hljs-title">addrinfo</span> *<span class="hljs-title">curr</span>;</span>
+    <span class="hljs-keyword">for</span> (curr = head; curr != <span class="hljs-literal">NULL</span>; curr = curr-&gt;ai_next) {
+        sock = socket(curr-&gt;ai_family, curr-&gt;ai_socktype, curr-&gt;ai_protocol);
+        <span class="hljs-keyword">if</span>(sock == <span class="hljs-number">-1</span>) {<span class="hljs-comment">// Fehlerbehandlung</span>
+        <span class="hljs-keyword">continue</span>;
+        }
+        <span class="hljs-keyword">if</span> (<span class="hljs-built_in">connect</span>(sock, curr-&gt;ai_addr, curr-&gt;ai_addrlen) == <span class="hljs-number">0</span>)
+        <span class="hljs-keyword">break</span>;
+        <span class="hljs-built_in">close</span>(sock);
+    }
+    freeaddrinfo(head);
+    <span class="hljs-keyword">if</span> (curr == <span class="hljs-literal">NULL</span>) die_m(<span class="hljs-string">"Could not connect to server"</span>);
+
+    FILE *rx, *tx;
+    <span class="hljs-keyword">if</span>( (rx = fdopen(sock, <span class="hljs-string">"r"</span>)) == <span class="hljs-literal">NULL</span>) die(<span class="hljs-string">"fdopen"</span>);
+    <span class="hljs-keyword">int</span> sock_copy = dup(sock);
+    <span class="hljs-keyword">if</span>(sock_copy &lt; <span class="hljs-number">0</span>) die(<span class="hljs-string">"dup"</span>);
+    <span class="hljs-keyword">if</span>( (tx = fdopen(sock_copy, <span class="hljs-string">"w"</span>)) == <span class="hljs-literal">NULL</span> ) die(<span class="hljs-string">"fdopen"</span>);
+
+    <span class="hljs-comment">//test it</span>
+    <span class="hljs-built_in">fprintf</span>(tx, <span class="hljs-string">"GET http://www.fau.de/index.html HTTP/1.1\r\n\r\n"</span>);
+    fflush(tx);
+    <span class="hljs-keyword">char</span> *lineptr = <span class="hljs-literal">NULL</span>;
+    <span class="hljs-keyword">size_t</span> lineSize = <span class="hljs-number">0</span>;
+    <span class="hljs-keyword">ssize_t</span> strLen = <span class="hljs-number">0</span>;
+    strLen = getline(&amp;lineptr, &amp;lineSize, rx);
+    <span class="hljs-keyword">if</span>(strLen &lt; <span class="hljs-number">0</span>) {
+        <span class="hljs-keyword">if</span>(ferror(rx)) die(<span class="hljs-string">"getline"</span>);
+    }
+    <span class="hljs-built_in">printf</span>(<span class="hljs-string">"%s\n"</span>, lineptr);
+    <span class="hljs-built_in">free</span>(lineptr);
+    
+    <span class="hljs-keyword">if</span>(fclose(rx)) perror(<span class="hljs-string">"fclose"</span>);
+    <span class="hljs-keyword">if</span>(fclose(tx)) perror(<span class="hljs-string">"fclose"</span>);
+}
+</code></pre>
+<p>&lt;!-- /include --&gt;</p>
 <h3>server</h3>
 <p>listen
 accept</p>
diff --git a/Zettel.md b/Zettel.md
index 657e601c40515244ac8f9058723e0faf6bcd1447..fe746186c38784b488641318bc803942e9e48f66 100644
--- a/Zettel.md
+++ b/Zettel.md
@@ -5,6 +5,8 @@
 getaddrinfo
 connect
 
+!include(client.c lang=c)
+
 ### server
 listen
 accept
diff --git a/client.c b/client.c
new file mode 100644
index 0000000000000000000000000000000000000000..162fdbca3b27e1949ad756c9db4a8404751f47c8
--- /dev/null
+++ b/client.c
@@ -0,0 +1,58 @@
+#include "die.h"
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netdb.h>
+#include <stdio.h>
+#include <unistd.h>
+
+int main() {
+    char *url = "www.fau.de";
+    char *port = "80";
+    struct addrinfo hints =
+        {
+        .ai_socktype = SOCK_STREAM,   // Nur TCP-Sockets
+        .ai_family   = AF_UNSPEC,     // Beliebige Adressfamilie
+        .ai_flags    = AI_ADDRCONFIG, // Nur Adresstypen für die auch ein lokales Interface existiert
+        }; // C: alle anderen Elemente der Struktur werden implizit genullt
+    
+    struct addrinfo *head;
+    int res = getaddrinfo(url, port, &hints, &head);
+    if(res) die_m(gai_strerror(res));
+    
+    // Liste der Adressen durchtesten
+    int sock;
+    struct addrinfo *curr;
+    for (curr = head; curr != NULL; curr = curr->ai_next) {
+        sock = socket(curr->ai_family, curr->ai_socktype, curr->ai_protocol);
+        if(sock == -1) {// Fehlerbehandlung
+        continue;
+        }
+        if (connect(sock, curr->ai_addr, curr->ai_addrlen) == 0)
+        break;
+        close(sock);
+    }
+    freeaddrinfo(head);
+    if (curr == NULL) die_m("Could not connect to server");
+
+    FILE *rx, *tx;
+    if( (rx = fdopen(sock, "r")) == NULL) die("fdopen");
+    int sock_copy = dup(sock);
+    if(sock_copy < 0) die("dup");
+    if( (tx = fdopen(sock_copy, "w")) == NULL ) die("fdopen");
+
+    //test it
+    fprintf(tx, "GET http://www.fau.de/index.html HTTP/1.1\r\n\r\n");
+    fflush(tx);
+    char *lineptr = NULL;
+    size_t lineSize = 0;
+    ssize_t strLen = 0;
+    strLen = getline(&lineptr, &lineSize, rx);
+    if(strLen < 0) {
+        if(ferror(rx)) die("getline");
+    }
+    printf("%s\n", lineptr);
+    free(lineptr);
+    
+    if(fclose(rx)) perror("fclose");
+    if(fclose(tx)) perror("fclose");
+}