Ejemplo n.º 1
0
int main(int argc, char* argv[]) {
	struct sockaddr_in serverAddress;	//Contains info for server address
	char *buffer = (char*) malloc(1024);					//buffer for sending commands
	FILE* cmds;							//file pointer to commands.txt
	unsigned int sleeptime;
	int sock;							//socket

	if(argc > 2) {
		err_n_die("Arguments: ./program <ip address>");
	}

	//create socket
	sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);

	memset(&serverAddress, 0, sizeof(serverAddress));
	serverAddress.sin_family = AF_INET;
	serverAddress.sin_port = htons(5000);
	if(inet_pton(AF_INET, argv[1], &serverAddress.sin_addr.s_addr) == -1) {
		err_n_die("inet_pton() failed\n");
	}

	//read commands from text file.
	cmds = fopen("commands.txt", "r");
	size_t len = 0;
	while(getLines(&buffer, cmds,&len) != -1) {

		//Get sleep time
		if(strstr(buffer, "sleep") != NULL){
			//Get ready for bed.
			int i = 0;
			for(i = 0; i < strlen(buffer); i++) {
				if((int)buffer[i] < 10) {
					//good night
					sleeptime = (unsigned int)buffer[i];
					sleep(sleeptime);
					break;
				} //if
			} //for
		} //if

		//send regular command
		else {
			if(sendto(sock, buffer, MAX, 0, (struct sockaddr *)&serverAddress, sizeof(serverAddress)) < 0) {
				err_n_die("sendto() failed\n");
			} //if
		} //else
		//Block until we get response
		getResponse();
	} //while

	//TODO: Receive data and save data. infinite loop?
	free(buffer);
	fclose(cmds);
	return 0;
} //main
Ejemplo n.º 2
0
int main(int argc, char *argv[]){
	if (argc != 2){
		err_n_die("Parameters: <Port>");
	}
	in_port_t servPort = atoi(argv[1]);
	// create socket
	int serverSocket;
	serverSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
	if(serverSocket < 0){
		err_n_die("Could not create socket");
	}
	// local address struct
	struct sockaddr_in servAddr;
	memset(&servAddr,0,sizeof(servAddr));
	servAddr.sin_family = AF_INET;
	servAddr.sin_addr.s_addr = htonl(INADDR_ANY);
	servAddr.sin_port = htons(servPort);
	// bind and listen
	if(bind(serverSocket,(struct sockaddr*) &servAddr,sizeof(servAddr)) < 0){
		err_n_die("Could not bind ServerSocket");
	}

	if (listen(serverSocket, 5) < 0){
		err_n_die("Could not listen");
	}

	while(1){
		//
		struct sockaddr_in clntAddr;
		socklen_t clntAddrLen = sizeof(clntAddr);

		int client = accept(serverSocket,(struct sockaddr *) &clntAddr,&clntAddrLen);
		if(client < 0){
			err_n_die("Could not accept connection");
		}

		char clientName[INET_ADDRSTRLEN];
		if(inet_ntop(AF_INET, &clntAddr.sin_addr.s_addr,clientName,sizeof(clientName)) != NULL){
			printf("Connected to client %s on port %d \n",clientName, ntohs(clntAddr.sin_port));
		}
		else {
			printf("Unable to get client address");
		}

		handleClient(client);

	}
}
Ejemplo n.º 3
0
int main(int argc, char*argv[]){
	if (argc != 4){
		err_n_die("Usage: <ip> <serverport> <message>");
	}
	char * servIP = argv[1];
	char * message = argv[3];

	in_port_t servPort = atoi(argv[2]);

	int sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
	if(sock < 0 ){
		err_n_die("could not create socket");
	}

	struct sockaddr_in servAddr;
	memset(&servAddr,0,sizeof(servAddr));
	servAddr.sin_family = AF_INET;
	int rtnVal = inet_pton(AF_INET,servIP,&servAddr.sin_addr.s_addr);
	if (rtnVal < 0){
		err_n_die("Could not convert IP address");
	}
	servAddr.sin_port = htons(servPort);

	if(connect(sock,(struct sockaddr*) &servAddr,sizeof(servAddr)) < 0){
		err_n_die("Could not connect");
	}

	size_t messageLength = strlen(message);

	ssize_t bytesSent = send(sock,message,messageLength,0);
	if (bytesSent <0 || bytesSent != messageLength){
		err_n_die("Could not send message");
	}

	printf("Message sent waiting for reply\n");

	char buffer[1024];
	ssize_t bytesRecieved = recv(sock,buffer,1024,0);
	strcat(buffer,"\0");
	printf("%s\n",buffer);
	

	close(sock);
	exit(0);

}
Ejemplo n.º 4
0
void handleClient(int socket){
	char buffer[1024];
	// recieve message
	ssize_t bytesReceived = recv(socket, buffer,1024,0);
	if(bytesReceived < 0){
		err_n_die("Receive failed");
	}
	strcat(buffer,"\0");
	printf("%s\n",buffer);

	ssize_t numBytesSent = send(socket, buffer, bytesReceived,0);
	printf("Echoed %ld bytes\n",numBytesSent);
	close(socket);
}
Ejemplo n.º 5
0
int main(int argc, char **argv)
{
	int					listenfd, connfd, n;
	struct sockaddr_in	servaddr;
	char				buff[MAXLINE+1];
	char				recvline[MAXLINE+1];
	time_t				ticks;

	if ((listenfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 )
		err_n_die("socket error.");
	

	bzero(&servaddr, sizeof(servaddr));
	servaddr.sin_family      = AF_INET;
	servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
	servaddr.sin_port        = htons(SERVER_PORT);	/* server port */

	if ((bind(listenfd, (SA *) &servaddr, sizeof(servaddr))) < 0)
		err_n_die("bind error.");

	if ((listen(listenfd, LISTENQ)) < 0)
		err_n_die("listen error.");
	

	for ( ; ; ) {
		//accept blocks until an incoming connection arrives
		//it returns a "file descriptor" to the connection
		printf("waiting for a connection...");
		fflush(stdout);
		connfd = accept(listenfd, (SA *) NULL, NULL);
		
		printf("got one! \n");
		if (connfd < 0)
		{
#ifdef EPROTO
			if (errno != EPROTO || errno != ECONNABORTED)
#else
			if (errno != ECONNABORTED)
#endif
			{
				continue; //skip this round of the for loop
			} else {
				err_n_die("accept error that wasn't an aborted connection.");
			}
		}

		//Now read the client's message.
		while ( (n = read(connfd, recvline, MAXLINE)) > 0) 
		{
			recvline[n] = 0;	/* null terminate */
			if (fputs(recvline, stdout) == EOF)
				err_n_die("fputs error");
			
			//detect the end of the message.
			if (recvline[n-1] == '\n')
			{
				break;
			}
		}
		if (n < 0)
			err_n_die("read error");
		
		//now send a response.
        ticks = time(NULL);
        snprintf(buff, sizeof(buff), "Thanks. Recved at (%.24s)\r\n", ctime(&ticks));
		
		//note: normally, you may want to check the results from write and close
		//in case errors occur. For now, I'm ignoring them.
		write(connfd, buff, strlen(buff));
		close(connfd);
	}
}
Ejemplo n.º 6
0
int main(int argc, char*argv[]){
	int sock;
	int n; // number of chars
	struct sockaddr_in serverAddr;
	struct sockaddr_in clientAddr;
	unsigned int clientAddrLength;
	uint16_t  serverPort;
	timesGuessedCorrectly = 0;
	timesGuessed = 0;

	// parse command line inputs
	if(argc < 3 || argc > 4){
		printf("Usage: <port> <number of characters> \n");
		exit(1);
	}
	serverPort = atoi(argv[1]);
	n = atoi(argv[2]);
	if(n > 8){
		printf("Number of characters exceeds maximum size, Rounding to 8\n");
	}
	char password[n+1];
	if(argc == 4){
		strcpy(password,argv[3]);
	}else{
		generateRandomPassword(n,password);
		password[n] = '\0';
	}
	printf("password = %s \n",password);
	// handle signal
	signal(SIGINT,handleInterupt);

	//initialize incoming list
	root = malloc(sizeof(root));
	strcpy(root->IP,"root");
	struct linkedAddress *current;
	current = root;
	current->next = NULL;

	// create and bind sockets
	if ((sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0){
		err_n_die("Could not open socket\n");
	}

	memset(&serverAddr,0,sizeof(serverAddr));
	serverAddr.sin_family = AF_INET;
	serverAddr.sin_addr.s_addr = htonl(INADDR_ANY);
	serverAddr.sin_port = htons(serverPort);

	if(bind(sock,(struct sockaddr *) &serverAddr,sizeof(serverAddr)) < 0){
		err_n_die("Could not bind to socket\n");
	}

	
	int returnCode; 
	for(;;){
		clientAddrLength = sizeof(clientAddr);
		int recvMsgSize,sentMsgSize;
		char buffer[20];
		// recv message from server
		if((recvMsgSize = recvfrom(sock,buffer,20,0,(struct sockaddr*) &clientAddr,
			&clientAddrLength)) < 0) {
			err_n_die("Could not receive message\n");
		} 
		// store IP in linked list
		char IP[INET_ADDRSTRLEN+1];
		inet_ntop(AF_INET, &(clientAddr.sin_addr),IP,INET_ADDRSTRLEN+1);
		if(IP != NULL){
			addToList(IP);
		} else{
			printf("IP address for client can not be resolved\n");
		}
		// if password is correct regenerate new password
		if(strcmp(buffer,password)== 0){
			returnCode = 0;
			generateRandomPassword(n,password);
			password[n] = '\0';
			timesGuessedCorrectly++;			
		}else{
			returnCode = 1;
		}
		timesGuessed++;
		// send return code
		if((sentMsgSize = sendto(sock,&returnCode,20,0,(struct sockaddr*) &clientAddr,
			clientAddrLength)) < 0){
			err_n_die("Could not send message");
		}

	}

}