Index: common/compiler.h
===================================================================
--- common/compiler.h	(revision d87708d60d0d5ff5a1442042899969dbe0daf09a)
+++ common/compiler.h	(revision e08495082ae80810734be6bd71168a2d7ff2a384)
@@ -1,11 +1,11 @@
-#ifdef _WIN64
+#if defined _WIN64
 	#define WINDOWS
-#elif _WIN32
+#elif defined _WIN32
 	#define WINDOWS
-#elif __linux
+#elif defined __linux
 	#define LINUX
-#elif __unix
+#elif defined __unix
 	#define LINUX
-#elif __posix
+#elif defined __posix
 	#define LINUX
 #endif
Index: common/message.cpp
===================================================================
--- common/message.cpp	(revision d87708d60d0d5ff5a1442042899969dbe0daf09a)
+++ common/message.cpp	(revision e08495082ae80810734be6bd71168a2d7ff2a384)
@@ -3,6 +3,9 @@
 #include "compiler.h"
 
-#ifdef WINDOWS
+#if defined WINDOWS
 	#include <winsock2.h>
+#elif defined LINUX
+	#include <sys/socket.h>
+	#include <netinet/in.h>
 #endif
 
@@ -14,5 +17,5 @@
 int receiveMessage(NETWORK_MSG *msg, int sock, struct sockaddr_in *dest)
 {
-	int socklen = sizeof(struct sockaddr_in);
+	socklen_t socklen = sizeof(struct sockaddr_in);
 
 	// assume we don't care about the value of socklen
Index: common/message.h
===================================================================
--- common/message.h	(revision d87708d60d0d5ff5a1442042899969dbe0daf09a)
+++ common/message.h	(revision e08495082ae80810734be6bd71168a2d7ff2a384)
Index: server/makefile
===================================================================
--- server/makefile	(revision d87708d60d0d5ff5a1442042899969dbe0daf09a)
+++ server/makefile	(revision e08495082ae80810734be6bd71168a2d7ff2a384)
@@ -1,2 +1,2 @@
-server : server.cpp
+server : ../common/message.cpp server.cpp
 	g++ -o $@ $? -lssl -lmysqlclient
Index: server/server.cpp
===================================================================
--- server/server.cpp	(revision d87708d60d0d5ff5a1442042899969dbe0daf09a)
+++ server/server.cpp	(revision e08495082ae80810734be6bd71168a2d7ff2a384)
@@ -1,2 +1,4 @@
+#include "../common/compiler.h"
+
 #include <sys/types.h>
 #include <stdlib.h>
@@ -14,4 +16,5 @@
 #include <openssl/ssl.h>
 #include <openssl/err.h>
+#include "../common/message.h"
 
 using namespace std;
@@ -29,5 +32,10 @@
    struct sockaddr_in server;
    struct sockaddr_in from;
-   char buf[1024];
+   NETWORK_MSG clientMsg, serverMsg;
+
+   srand(time(NULL));
+   int num = (rand() % 1000) + 1;
+
+   cout << "num: " << num << endl;
 
    SSL_load_error_strings();
@@ -48,14 +56,35 @@
    server.sin_port=htons(atoi(argv[1]));
    if (bind(sock,(struct sockaddr *)&server,length)<0) 
-       error("binding");
+      error("binding");
    fromlen = sizeof(struct sockaddr_in);
    while (1) {
-       n = recvfrom(sock,buf,1024,0,(struct sockaddr *)&from,&fromlen);
-       if (n < 0) error("recvfrom");
-       write(1,"Received a datagram: ",21);
-       write(1,buf,n);
-       n = sendto(sock,"Got your message\n",17,
-                  0,(struct sockaddr *)&from,fromlen);
-       if (n  < 0) error("sendto");
+      n = receiveMessage(&clientMsg, sock, &from);
+      if (n < 0)
+         error("recieveMessage");
+      cout << "msg: " << clientMsg.buffer << endl;
+
+      if (strcmp(clientMsg.buffer, "Hello"))
+      {
+         strcpy(serverMsg.buffer, "I'm thinking of a number between 1 and 1000. Guess what it is.");
+      }else {
+         int guess = atoi(clientMsg.buffer);
+
+         if (guess < 1 || guess > 1000) {
+            strcpy(serverMsg.buffer, "You must guess a number between 1 and 1000");
+         }else if(guess > num)
+            strcpy(serverMsg.buffer, "The number I'm thinking of is less than that.");
+         else if(guess < num)
+            strcpy(serverMsg.buffer, "The number I'm thinking of is greater than that.");
+         else if(guess == num) {
+            strcpy(serverMsg.buffer, "Congratulations! I will now think of a new number.");
+            num = (rand() % 1000) + 1;
+         }	
+      }
+
+      cout << "msg: " << serverMsg.buffer << endl;
+
+      n = sendMessage(&serverMsg, sock, &from);
+      if (n  < 0)
+         error("sendMessage");
    }
    return 0;
