<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://www.programmingexamples.net/w/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://www.programmingexamples.net/w/index.php?action=history&amp;feed=atom&amp;title=CPP%2FSockets</id>
		<title>CPP/Sockets - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://www.programmingexamples.net/w/index.php?action=history&amp;feed=atom&amp;title=CPP%2FSockets"/>
		<link rel="alternate" type="text/html" href="http://www.programmingexamples.net/w/index.php?title=CPP/Sockets&amp;action=history"/>
		<updated>2026-05-31T14:36:23Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.23.5</generator>

	<entry>
		<id>http://www.programmingexamples.net/w/index.php?title=CPP/Sockets&amp;diff=350&amp;oldid=prev</id>
		<title>Daviddoria at 17:53, 23 November 2010</title>
		<link rel="alternate" type="text/html" href="http://www.programmingexamples.net/w/index.php?title=CPP/Sockets&amp;diff=350&amp;oldid=prev"/>
				<updated>2010-11-23T17:53:04Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;tr style='vertical-align: top;'&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 17:53, 23 November 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&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 colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; 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;(Taken from here with non-trivial modifications: http://www.linuxhowtos.org/C_C++/socket.htm)&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; 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 class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;First run&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;First run&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; server 51717&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#160; server 51717&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Daviddoria</name></author>	</entry>

	<entry>
		<id>http://www.programmingexamples.net/w/index.php?title=CPP/Sockets&amp;diff=349&amp;oldid=prev</id>
		<title>Daviddoria: Created page with 'First run  server 51717  Then run (while 'server' is still running):  client localhost 51717  The client will ask you to type a message. Do this, and press enter. You will see th…'</title>
		<link rel="alternate" type="text/html" href="http://www.programmingexamples.net/w/index.php?title=CPP/Sockets&amp;diff=349&amp;oldid=prev"/>
				<updated>2010-11-23T17:51:35Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;#039;First run  server 51717  Then run (while &amp;#039;server&amp;#039; is still running):  client localhost 51717  The client will ask you to type a message. Do this, and press enter. You will see th…&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;First run&lt;br /&gt;
 server 51717&lt;br /&gt;
&lt;br /&gt;
Then run (while 'server' is still running):&lt;br /&gt;
 client localhost 51717&lt;br /&gt;
&lt;br /&gt;
The client will ask you to type a message. Do this, and press enter. You will see the message appear in the server window!&lt;br /&gt;
&lt;br /&gt;
==client.cpp==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;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;sys/socket.h&amp;gt;&lt;br /&gt;
#include &amp;lt;netinet/in.h&amp;gt;&lt;br /&gt;
#include &amp;lt;netdb.h&amp;gt;&lt;br /&gt;
#include &amp;lt;cstdlib&amp;gt;&lt;br /&gt;
#include &amp;lt;cstring&amp;gt; // includes bzero&lt;br /&gt;
#include &amp;lt;fstream&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
    int sockfd, portno, n;&lt;br /&gt;
    struct sockaddr_in serv_addr;&lt;br /&gt;
    struct hostent *server;&lt;br /&gt;
&lt;br /&gt;
    char buffer[256];&lt;br /&gt;
    if (argc &amp;lt; 3)&lt;br /&gt;
    {&lt;br /&gt;
       fprintf(stderr,&amp;quot;usage %s hostname port\n&amp;quot;, argv[0]);&lt;br /&gt;
       exit(0);&lt;br /&gt;
    }&lt;br /&gt;
    portno = atoi(argv[2]);&lt;br /&gt;
    sockfd = socket(AF_INET, SOCK_STREAM, 0);&lt;br /&gt;
    if (sockfd &amp;lt; 0)&lt;br /&gt;
    {&lt;br /&gt;
        std::cout &amp;lt;&amp;lt; &amp;quot;ERROR opening socket&amp;quot; &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
        exit(-1);&lt;br /&gt;
    }&lt;br /&gt;
    server = gethostbyname(argv[1]);&lt;br /&gt;
    if (server == NULL) {&lt;br /&gt;
        fprintf(stderr,&amp;quot;ERROR, no such host\n&amp;quot;);&lt;br /&gt;
        exit(0);&lt;br /&gt;
    }&lt;br /&gt;
    bzero((char *) &amp;amp;serv_addr, sizeof(serv_addr));&lt;br /&gt;
    serv_addr.sin_family = AF_INET;&lt;br /&gt;
    bcopy((char *)server-&amp;gt;h_addr, &lt;br /&gt;
         (char *)&amp;amp;serv_addr.sin_addr.s_addr,&lt;br /&gt;
         server-&amp;gt;h_length);&lt;br /&gt;
    serv_addr.sin_port = htons(portno);&lt;br /&gt;
    if (connect(sockfd,(sockaddr*)(&amp;amp;serv_addr),sizeof(serv_addr)) &amp;lt; 0)&lt;br /&gt;
    {&lt;br /&gt;
        std::cout &amp;lt;&amp;lt; &amp;quot;ERROR connecting&amp;quot; &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
        exit(-1);&lt;br /&gt;
    }&lt;br /&gt;
    printf(&amp;quot;Please enter the message: &amp;quot;);&lt;br /&gt;
    bzero(buffer,256);&lt;br /&gt;
    fgets(buffer,255,stdin);&lt;br /&gt;
    n = write(sockfd,buffer,strlen(buffer));&lt;br /&gt;
    if (n &amp;lt; 0)&lt;br /&gt;
    {&lt;br /&gt;
         std::cout &amp;lt;&amp;lt; &amp;quot;ERROR writing to socket&amp;quot; &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
         exit(-1);&lt;br /&gt;
    }&lt;br /&gt;
    bzero(buffer,256);&lt;br /&gt;
    n = read(sockfd,buffer,255);&lt;br /&gt;
    if (n &amp;lt; 0)&lt;br /&gt;
    {&lt;br /&gt;
         std::cout &amp;lt;&amp;lt; &amp;quot;ERROR reading from socket&amp;quot; &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
    }&lt;br /&gt;
    printf(&amp;quot;%s\n&amp;quot;,buffer);&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==server.cpp==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
/* A simple server in the internet domain using TCP&lt;br /&gt;
   The port number is passed as an argument */&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;sys/socket.h&amp;gt;&lt;br /&gt;
#include &amp;lt;netinet/in.h&amp;gt;&lt;br /&gt;
#include &amp;lt;cstdlib&amp;gt;&lt;br /&gt;
#include &amp;lt;cstring&amp;gt; // includes bzero&lt;br /&gt;
#include &amp;lt;iterator&amp;gt;&lt;br /&gt;
#include &amp;lt;iostream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(int argc, char *argv[])&lt;br /&gt;
{&lt;br /&gt;
     int sockfd, newsockfd, portno, clilen;&lt;br /&gt;
     char buffer[256];&lt;br /&gt;
     struct sockaddr_in serv_addr, cli_addr;&lt;br /&gt;
     int n;&lt;br /&gt;
     if (argc &amp;lt; 2) {&lt;br /&gt;
         fprintf(stderr,&amp;quot;ERROR, no port provided\n&amp;quot;);&lt;br /&gt;
         exit(1);&lt;br /&gt;
     }&lt;br /&gt;
     sockfd = socket(AF_INET, SOCK_STREAM, 0);&lt;br /&gt;
     if (sockfd &amp;lt; 0)&lt;br /&gt;
     {&lt;br /&gt;
        std::cout &amp;lt;&amp;lt; &amp;quot;ERROR opening socket&amp;quot; &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
        exit(-1);&lt;br /&gt;
     }&lt;br /&gt;
     bzero((char *) &amp;amp;serv_addr, sizeof(serv_addr));&lt;br /&gt;
     portno = atoi(argv[1]);&lt;br /&gt;
     serv_addr.sin_family = AF_INET;&lt;br /&gt;
     serv_addr.sin_addr.s_addr = INADDR_ANY;&lt;br /&gt;
     serv_addr.sin_port = htons(portno);&lt;br /&gt;
     if (bind(sockfd, (struct sockaddr *) &amp;amp;serv_addr,&lt;br /&gt;
              sizeof(serv_addr)) &amp;lt; 0)&lt;br /&gt;
     {&lt;br /&gt;
       std::cout &amp;lt;&amp;lt; &amp;quot;ERROR on binding&amp;quot; &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
       exit(-1);&lt;br /&gt;
     }&lt;br /&gt;
     listen(sockfd,5);&lt;br /&gt;
     clilen = sizeof(cli_addr);&lt;br /&gt;
     newsockfd = accept(sockfd, &lt;br /&gt;
                 (struct sockaddr *) &amp;amp;cli_addr, &lt;br /&gt;
                 (socklen_t*)(&amp;amp;clilen));&lt;br /&gt;
     if (newsockfd &amp;lt; 0)&lt;br /&gt;
     {&lt;br /&gt;
          std::cout &amp;lt;&amp;lt; &amp;quot;ERROR on accept&amp;quot; &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
          exit(-1);&lt;br /&gt;
     }&lt;br /&gt;
     bzero(buffer,256);&lt;br /&gt;
     n = read(newsockfd,buffer,255);&lt;br /&gt;
     if (n &amp;lt; 0)&lt;br /&gt;
     {&lt;br /&gt;
       std::cout &amp;lt;&amp;lt; &amp;quot;ERROR reading from socket&amp;quot; &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
       exit(-1);&lt;br /&gt;
     }&lt;br /&gt;
     printf(&amp;quot;Here is the message: %s\n&amp;quot;,buffer);&lt;br /&gt;
     n = write(newsockfd,&amp;quot;I got your message&amp;quot;,18);&lt;br /&gt;
     if (n &amp;lt; 0)&lt;br /&gt;
     {&lt;br /&gt;
       std::cout &amp;lt;&amp;lt; &amp;quot;ERROR writing to socket&amp;quot; &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
       exit(-1);&lt;br /&gt;
     }&lt;br /&gt;
     return 0; &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==CMakeLists.txt==&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cmake&amp;quot;&amp;gt;&lt;br /&gt;
cmake_minimum_required(VERSION 2.6)&lt;br /&gt;
&lt;br /&gt;
Project(Sockets)&lt;br /&gt;
&lt;br /&gt;
ADD_EXECUTABLE(server server.cpp)&lt;br /&gt;
ADD_EXECUTABLE(client client.cpp)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Daviddoria</name></author>	</entry>

	</feed>