Setup client and server properly
[progcomp2012.git] / judge / manager / network_controller.cpp
1 #include "network_controller.h"
2
3 NetworkController::NetworkController(const Piece::Colour & newColour, const char * newName) : Controller(newColour, newName), sfd(-1)
4 {
5         //struct protoent * tcp = getprotobyname("tcp");
6  
7         sfd = socket(PF_INET, SOCK_STREAM, 0);
8         if (sfd < 0)
9         {
10                 perror("NetworkController::NetworkController - Error creating TCP socket");
11                 return;
12         }
13 }
14
15 NetworkController::~NetworkController()
16 {
17         if (Valid())
18         {
19                 if (shutdown(sfd, SHUT_RDWR) == -1)
20                 {
21                         perror("NetworkController::~NetworkController - shutting down socket... ");
22                         close(sfd);
23                         sfd = -1;
24                 }
25         }
26         close(sfd);
27 }
28
29 void NetworkController::Message(const char * string)
30 {
31         
32 }
33
34 Server::Server(const Piece::Colour & newColour, const char * newName) : NetworkController(newColour, newName)
35 {
36         struct   sockaddr_in name;
37         char   buf[1024];
38         int    cc;
39
40         
41         name.sin_family = AF_INET;
42         name.sin_addr.s_addr = htonl(INADDR_ANY);
43         name.sin_port = htons(NetworkController::port);
44
45         if (bind( sfd, (struct sockaddr *) &name, sizeof(name) ) < 0)
46         {
47                 perror("Server::Server - Error binding socket");
48                 close(sfd); sfd = -1; return;
49         }
50
51         if (listen(sfd,1) < 0)
52         {
53                 perror("Server::Server - Error listening on socket");
54                 close(sfd); sfd = -1; return;
55         }
56         int psd = accept(sfd, 0, 0);
57         close(sfd);
58         sfd = psd;
59         if (sfd < 0)
60         {
61                 perror("Server::Server - Error accepting connection");
62                 close(sfd); sfd = -1; return;
63         }
64
65
66         for(;;) 
67         {
68                 cc=recv(sfd,buf,sizeof(buf), 0) ;
69                 if (cc == 0) exit (0);
70                 buf[cc] = '\0';
71                 printf("message received: %s\n", buf);
72         }
73 }
74
75
76 Client::Client(const Piece::Colour & newColour, const char * newName, const char * address) : NetworkController(newColour, newName)
77 {
78         struct  sockaddr_in server;
79         struct  hostent *hp;
80
81
82         server.sin_family = AF_INET;
83         hp = gethostbyname("127.0.0.1");
84         bcopy ( hp->h_addr, &(server.sin_addr.s_addr), hp->h_length);
85         server.sin_port = htons(NetworkController::port);
86
87         if (connect(sfd, (struct sockaddr *) &server, sizeof(server)) < 0)
88         {
89                 perror("Client::Client - Error connecting to server at address %s");
90                 close(sfd); sfd = -1;
91                 return;
92         }
93
94         for (;;) {
95            send(sfd, "HI", 2,0 );
96            sleep(2);
97         }
98
99 }
100 //EOF
101
102

UCC git Repository :: git.ucc.asn.au