do not push, debug commands involved

This commit is contained in:
Dhanya Maliakal
2015-08-10 13:44:57 +02:00
parent a4a0ea508e
commit 52f83b9249
4 changed files with 79 additions and 21 deletions

View File

@ -60,7 +60,7 @@ class sockaddr_in;
#include <ifaddrs.h>
#endif
#include "ansi.h"
#include <stdlib.h> /******exit */
#include <unistd.h>
@ -71,6 +71,8 @@ class sockaddr_in;
#include <errno.h>
#include <stdio.h>
#include <signal.h> //SIGINT
using namespace std;
#define DEFAULT_PACKET_SIZE 1286
@ -125,6 +127,7 @@ typedef struct
struct hostent *hostInfo = gethostbyname(host_ip_or_name);
if (hostInfo == NULL){
cerr << "Exiting: Problem interpreting host: " << host_ip_or_name << "\n";
cprintf(RED,"Exiting: Problem interpreting host:%s\n",host_ip_or_name);
} else {
// Set some fields in the serverAddress structure.
serverAddress.sin_family = hostInfo->h_addrtype;
@ -134,6 +137,7 @@ typedef struct
socketDescriptor=0; //You can use send and recv, //would it work?????
}
clientAddress_length=sizeof(clientAddress);
cprintf(MAGENTA, "client socket created %d \n",socketDescriptor,protocol);
}
@ -176,6 +180,7 @@ typedef struct
nsent(0),
total_sent(0)
{
signal(SIGCHLD,SIG_IGN);
//memset(&serverAddress, 0, sizeof(sockaddr_in));
// memset(&clientAddress, 0, sizeof(sockaddr_in));
// serverAddress = {0};
@ -205,9 +210,12 @@ typedef struct
socketDescriptor = socket(AF_INET, getProtocol(),0); //tcp
cprintf(MAGENTA, "socket created %d protocol:%d\n",socketDescriptor,protocol);
if (socketDescriptor < 0) {
cerr << "Can not create socket "<<endl;
cprintf(RED,"Can not create socket \n");
return;
}
@ -229,6 +237,7 @@ typedef struct
int val=1;
if (setsockopt(socketDescriptor,SOL_SOCKET,SO_REUSEADDR,&val,sizeof(int)) == -1) {
cerr << "setsockopt" << endl;
cprintf(RED,"setsockopt \n");
socketDescriptor=-1;
return;
}
@ -239,6 +248,7 @@ typedef struct
if((p == UDP) && (setsockopt(socketDescriptor, SOL_SOCKET, SO_RCVBUF, &val, sizeof(int)) == -1))
{
cerr << "WARNING:Could not set socket receive buffer size" << endl;
cprintf(RED,"WARNING:Could not set socket receive buffer size \n");
//socketDescriptor=-1;
//return;
}
@ -247,6 +257,7 @@ typedef struct
if(bind(socketDescriptor,(struct sockaddr *) &serverAddress,sizeof(serverAddress))<0){
cerr << "Can not bind socket "<< endl;
cprintf(RED,"Can not bind socket \n");
socketDescriptor=-1;
return;
}
@ -330,6 +341,7 @@ typedef struct
if (socketDescriptor>0) {
if ((file_des = accept(socketDescriptor,(struct sockaddr *) &clientAddress, &clientAddress_length)) < 0) {
cerr << "Error: with server accept, connection refused"<<endl;
cprintf(RED,"Error: with server accept, connection refused");
switch(errno) {
case EWOULDBLOCK:
printf("ewouldblock eagain\n");
@ -377,12 +389,15 @@ typedef struct
printf("unknown error\n");
}
socketDescriptor=-1;
cprintf(RED, "file des NOT connected %d \n",file_des);
}
else{
inet_ntop(AF_INET, &(clientAddress.sin_addr), dummyClientIP, INET_ADDRSTRLEN);
#ifdef VERY_VERBOSE
cout << "client connected "<< file_des << endl;
#endif
cprintf(MAGENTA, "file des connected %d \n",file_des);
}
}
@ -397,14 +412,17 @@ typedef struct
// SetTimeOut(10);
if (socketDescriptor < 0){
cerr << "Can not create socket "<<endl;
cprintf(RED, "Can not create socket in accept\n");
file_des = socketDescriptor;
} else {
if(connect(socketDescriptor,(struct sockaddr *) &serverAddress,sizeof(serverAddress))<0){
cerr << "Can not connect to socket "<<endl;
cprintf(RED, "Can not connect socket in accept\n");
file_des = -1;
} else{
file_des = socketDescriptor;
cprintf(MAGENTA, "file des connected %d \n",file_des);
}
}
@ -427,24 +445,44 @@ typedef struct
socketDescriptor=-1;
}
else{
/*
close(socketDescriptor);
socketDescriptor=-1;
if(is_a_server){
if(file_des>=0){
close(file_des);
file_des=-1;
}
}
*/
if(file_des>=0){ //then was open
if(is_a_server){
close(file_des);
// cprintf(MAGENTA, "file_des disconnected %d \n",file_des);
if(close(file_des))
cprintf(RED,"file_des not disconnected %d\n", file_des);
// cprintf(MAGENTA, "file_des disconnected %d \n",file_des);
}
else {
close(socketDescriptor);
//cprintf(MAGENTA, "socketDescriptor disconnected %d \n",socketDescriptor);
if(close(socketDescriptor))
cprintf(RED,"socketDescriptor not disconnected %d\n", file_des);
// cprintf(MAGENTA, "socketDescriptor disconnected %d \n",socketDescriptor);
socketDescriptor=-1;
}
file_des=-1;
}
}
};
void ShutDownSocket(){
while(!shutdown(socketDescriptor, SHUT_RDWR));
close(socketDescriptor);
socketDescriptor = -1;
while(!shutdown(socketDescriptor, SHUT_RDWR));
Disconnect();
};