00001
00002
00003 #include "../include/utility.h"
00004 #include "../include/cond_comp.h"
00005 #include <netinet/in.h>
00006 #include <string.h>
00007 #include <stdio.h>
00008 #include <string>
00009 #include <arpa/inet.h>
00010
00011 using namespace std;
00012
00013 int init_sd_serv(int port, string ip_addr) {
00014 sockaddr_in my_addr;
00015 int sd;
00016
00017 memset(&my_addr, 0, sizeof(sockaddr_in));
00018 my_addr.sin_family = AF_INET;
00019 my_addr.sin_port = htons(port);
00020 if(inet_pton(AF_INET, ip_addr.c_str(), &my_addr.sin_addr.s_addr) <= 0) {
00021 DEB(fprintf(stderr, "IP address not valid\n"));
00022 return -1;
00023 }
00024 sd = socket(AF_INET, SOCK_STREAM, 0);
00025 if(sd < 0) {
00026 DEB(fprintf(stderr, "socket creation failed\n"));
00027 return -1;
00028 }
00029 if(bind(sd, (sockaddr*) &my_addr, sizeof(my_addr)) < 0) {
00030 close(sd);
00031 DEB(fprintf(stderr, "bind failed\n"));
00032 return -1;
00033 }
00034 if(listen(sd, BACKLOG) < 0) {
00035 close(sd);
00036 DEB(fprintf(stderr, "listen failed\n"));
00037 return -1;
00038 }
00039 return sd;
00040 }
00041
00042 int init_sd_cli(int port, string ip_addr) {
00043 sockaddr_in DFR_addr;
00044 int sd;
00045
00046 memset(&DFR_addr, 0, sizeof(sockaddr_in));
00047 DFR_addr.sin_family = AF_INET;
00048 DFR_addr.sin_port = htons(port);
00049 if(inet_pton(AF_INET, ip_addr.c_str(), &DFR_addr.sin_addr.s_addr) <= 0) {
00050 DEB(fprintf(stderr, "IP address not valid\n"));
00051 return -1;
00052 }
00053 sd = socket(AF_INET, SOCK_STREAM, 0);
00054 if(sd < 0) {
00055 DEB(fprintf(stderr, "socket creation failed\n"));
00056 return -1;
00057 }
00058 if(connect(sd, (sockaddr*) &DFR_addr, sizeof(DFR_addr)) < 0) {
00059 DEB(fprintf(stderr, "connect failed\n"));
00060 close(sd);
00061 return -1;
00062 }
00063 return sd;
00064 }