//Funcion start int start_server(const u_short port, const char baseDir[]) { int serverSocket; int clientSocket; char clientIP[18]; u_int clientPort; int forkID; int localError; serverSocket = newTCPServerSocket4("0.0.0.0",port,5); if(serverSocket == -1) { return 1; } while(true) { bzero(clientIP,sizeof(clientIP)); clientPort = 0; debug(1,"%s","Waiting for a Client..."); clientSocket = waitConnection4(serverSocket,clientIP,&clientPort); if(clientSocket == -1) { debug(1,"%s","ERROR: Invalid Client Socket"); continue; } debug(2,"Connected Client %s:%u",clientIP,clientPort); forkID = fork(); if(forkID == 0) { //Hilo para trabajar con el Cliente start_protocol(clientSocket,baseDir); closeTCPSocket(clientSocket); debug(2,"Close connection (%s:%u)",clientIP,clientPort); } else if(forkID > 0) { //Hilo para trabajar con el Servidor closeTCPSocket(clientSocket); } else { //Debug del fork. localError = errno; debug(0,"ERROR, Cant Fork for Client %s",strerror(localError)); return 1; } } closeTCPSocket(serverSocket); return 0; }
int start_server(const char iface[], const u_short port, const u_short maxClients) { int serverSocket; int clientSocket; char clientIP[18]; u_int clientPort; int forkID; int localerror; serverSocket = newTCPServerSocket4(iface,port,maxClients); if(serverSocket == -1) { return 0; } while(1) { bzero(clientIP,sizeof(clientIP)); clientPort = 0; debug(1,"%s","Waiting for a Client..."); clientSocket = waitConnection4(serverSocket,clientIP,&clientPort); if(clientSocket == -1) { debug(1,"%s","ERROR: Invalid Client Socket"); continue; } debug(2,"Connected Client %s:%u",clientIP,clientPort); forkID = fork(); if(forkID == 0) { start_protocol(clientSocket); closeTCPSocket(clientSocket); debug(2,"Close connection (%s:%u)",clientIP,clientPort); } else if(forkID > 0) { closeTCPSocket(clientSocket); } else { localerror = errno; debug(0,"ERROR, Cant Fork for Client %s",strerror(localerror)); return 1; } } closeTCPSocket(serverSocket); return 1; }
LcmTunnel::~LcmTunnel() { if (subscription) { lcm_unsubscribe(lcm, subscription); } //cleanup the sending thread state g_mutex_lock(sendQueueLock); stopSendThread = true; g_cond_broadcast(sendQueueCond); g_mutex_unlock(sendQueueLock); g_thread_join(sendThread); //wait for thread to exit g_mutex_lock(sendQueueLock); while (!sendQueue.empty()) { delete sendQueue.front(); sendQueue.pop_front(); } g_mutex_unlock(sendQueueLock); g_mutex_free(sendQueueLock); g_cond_free(sendQueueCond); if (udp_fd >= 0) { //send out a disconnect message lcm_tunnel_disconnect_msg_t disc_msg; disc_msg.utime = _timestamp_now(); int msg_sz = lcm_tunnel_disconnect_msg_t_encoded_size(&disc_msg); uint8_t msg_buf[msg_sz]; lcm_tunnel_disconnect_msg_t_encode(msg_buf, 0, msg_sz, &disc_msg); send(udp_fd, msg_buf, msg_sz, 0); //close UDP socket close(udp_fd); g_io_channel_unref(udp_ioc); g_source_remove(udp_sid); } //close TCP socket closeTCPSocket(); if (regex != NULL) g_regex_unref(regex); free(buf); free(channel); free(recFlags); free(tunnel_params); if (ldpc_dec != NULL) delete ldpc_dec; }
//Funcion start int start_client(const u_short port, const char ip[], const char remoteFilename[], const char localFilename[]) { int socket; socket = newTCPClientSocket4(ip, port); if(socket == -1) { return 1; } start_protocol(socket,remoteFilename,localFilename); closeTCPSocket(socket); debug(2,"Close connection (%s:%u)",ip,port); return 0; }
int start_client(const u_short port, const char ip[], const char remoteFilename[], const char localFilename[]) { //Esta funcion inicia el cliente si no hay errores al crear el socket del cliente int socket; socket = newTCPClientSocket4(ip, port); if(socket == -1) { //Si hubo un error al crear el socket, regresa un 1 return 1; } //si no hubo errores, iniciamos el protocolo beginProtocol(socket,remoteFilename,localFilename); closeTCPSocket(socket); //cerramos el socket //debug(2,"Close connection (%s:%u)",ip,port); return 0; }
int get_LIST(const u_short port, const char ip[]) { int socket; char *list,*end; char *readBuffer = (char *) malloc(255); char *writeBuffer = (char *) malloc(255); int readBytes; socket = newTCPClientSocket4(ip, port); //Creamos el socket del cliente if(socket == -1) { //Si no se pudo, error, regresamos un 1 return 1; } //Si todo salio bien... sprintf(writeBuffer,"LIST\r\n\r\n"); //imprimimos en writeBuffer el header LIST sendLine(socket,writeBuffer); //y lo escribimos en el socket //ahora leemos la respuesta al LIST list = (char *) malloc(254); //list guardará la lista de archivos del cliente while((readBytes = read(socket,readBuffer,1))>0) {//leemos byte por byte readBuffer list = (char *) realloc(list,strlen(list)+readBytes+1); strncat(list,readBuffer,readBytes);//concatenamos en list lo que se haya leido en readBuffer end = list+(strlen(list)-4);//colocamos end 4 bytes antes del final de list if(strcmp(end,"\r\n\r\n")==0) { //si hemos llegado al final del bufer: *end = '\0'; //Colocamos un caracter nulo break; //Solo entonces dejamos de leer } } printf("Esta es la lista de archivos del host:\n"); printf("%s\n",list); //entonces imprimimos la lista entera //Liberamos la memoria de los punteros. free(list); free(readBuffer); free(writeBuffer); ///Y cerramos el socket... //debug(2,"Close connection (%s:%u)",ip,port); closeTCPSocket(socket); return 0; }
//Funcion GET list int get_list(const u_short port, const char ip[]) { int socketf; char *list; char *readBuffer = (char *) malloc(255); char *writeBuffer = (char *) malloc(255); int readBytes; char *ptr; socketf = newTCPClientSocket4(ip, port); if(socketf == -1) { return 1; } sprintf(writeBuffer,"LIST\r\n\r\n"); sendLine(socketf,writeBuffer); //LEEMOS LA RESPUESTA AL GET list = (char *) malloc(254); while((readBytes = read(socketf,readBuffer,1))>0) { list = (char *) realloc(list,strlen(list)+readBytes+1); strncat(list,readBuffer,readBytes); ptr = list+(strlen(list)-4); if(strcmp(ptr,"\r\n\r\n")==0) { *ptr = '\0'; break; } } printf("%s",list); free(list); free(readBuffer); free(writeBuffer); debug(2,"Close connection (%s:%u)",ip,port); closeTCPSocket(socketf); for(;;); return 0; }
bool GSMInterface::sendRawPacket(String packet) { int packetSize = packet.length()-1; serialinterface->printToGSM("AT+QISEND=" + String(packetSize)); serialinterface->printToGSM('\r'); delay(100); Serial.println(packet); serialinterface->printToGSM(packet); delay(100); if(serialinterface->pollForResponseFromCommand("", "OK", false)) { return true; } else { closeTCPSocket(); return false; } }
int GSMInterface::sendPacket(String server, int port, String packet) { if(!openTCPSocket(server, port)) return 500; int packetSize = packet.length()-1; serialinterface->printToGSM("AT+QISEND=" + String(packetSize)); serialinterface->printToGSM('\r'); delay(100); serialinterface->printToGSM(packet); if(serialinterface->pollForResponseFromCommand("", "OK", false)) { delay(100); //closeTCPSocket(); return 200; } else { closeTCPSocket(); return 501; } }
//Funcion start int start_client(const u_short port, const char ip[], const char remoteFilename[], const char localFilename[]) { int socketf; socketf = newTCPClientSocket4(ip, port); int sockfd; pid_t pid; struct sockaddr_in servaddr; //if (argc != 2) { // puts("usage: cli <IPaddress>"); // exit(1); //} bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(6000); inet_pton(AF_INET, "192.168.1.255", &servaddr.sin_addr); sockfd = socket(AF_INET, SOCK_DGRAM, 0); if ((pid = fork()) == 0) { dg_cli(stdin, sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)); exit(0); } if(socketf == -1) { return 1; } start_protocol(socketf,remoteFilename,localFilename); closeTCPSocket(socketf); debug(2,"Close connection (%s:%u)",ip,port); sleep(2); return 0; }
//Funcion start int start_server(const u_short port, const char baseDir[]) { int serverSocket; int clientSocket; char clientIP[18]; u_int clientPort; int forkID; int localError; pid_t pid; if ((pid = fork()) == 0) { int sockfd; struct sockaddr_in servaddr, cliaddr; sockfd = socket(AF_INET, SOCK_DGRAM, 0); bzero(&servaddr, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(PORT); bind(sockfd, (struct sockaddr *) &servaddr, sizeof(servaddr)); dg_echo(sockfd, (struct sockaddr *) &cliaddr, sizeof(cliaddr)); exit(0); } serverSocket = newTCPServerSocket4("0.0.0.0", 5001, 5); if(serverSocket == -1) { return 1; } while(true) { bzero(clientIP,sizeof(clientIP)); clientPort = 0; debug(1,"%s","Waiting for a Client..."); clientSocket = waitConnection4(serverSocket,clientIP,&clientPort); if(clientSocket == -1) { debug(1,"%s","ERROR: Invalid Client Socket"); continue; } debug(2,"Connected Client %s:%u",clientIP,clientPort); forkID = fork(); if(forkID == 0) { //Hilo para trabajar con el Cliente start_protocol(clientSocket,baseDir); closeTCPSocket(clientSocket); debug(2,"Close connection (%s:%u)",clientIP,clientPort); } else if(forkID > 0) { //Hilo para trabajar con el Servidor closeTCPSocket(clientSocket); } else { //Debug del fork. localError = errno; debug(0,"ERROR, Cant Fork for Client %s",strerror(localError)); return 1; } } closeTCPSocket(serverSocket); return 0; }
int start_server(const char iface[], const u_short port, const u_short maxClients, const char *filename) { int serverSocket; int clientSocket; char clientIP[18]; u_int clientPort; int file; int localerror; int readBytes = 0; int totalReadBytes = 0; int totalWriteBytes = 0; int writeBytes = 0; char *readBuffer = NULL; debug(2,"Trabajado en %s:%i",iface,port); serverSocket = newTCPServerSocket4(iface,port,maxClients); if(serverSocket == -1) { return false; } if((file = open(filename,O_WRONLY | O_CREAT | O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP)) == -1) { localerror = errno; //fprintf(stderr,"Can't open filename (%s)",strerror(localerror)); return false; } bzero(clientIP,sizeof(clientIP)); clientPort = 0; debug(5,"%s","Waiting for a Client..."); clientSocket = waitConnection4(serverSocket,clientIP,&clientPort); debug(4,"Connected Client %s:%u",clientIP,clientPort); readBuffer = (char *) calloc(1,BUFFERSIZE); while((readBytes = read(clientSocket,readBuffer,BUFFERSIZE)) > 0) { debug(5,"\tSe leyeron de %s:%u %u bytes",clientIP,clientPort,readBytes); totalWriteBytes = 0; while(totalWriteBytes < readBytes) { writeBytes = write(file,readBuffer+totalWriteBytes,readBytes-totalWriteBytes); totalWriteBytes += writeBytes; } totalReadBytes += readBytes; } debug(3,"\t Se leyeron un total de %i de bytes\n",totalReadBytes); free(readBuffer); close(file); closeTCPSocket(clientSocket); debug(4,"Close connection (%s:%u)",clientIP,clientPort); closeTCPSocket(serverSocket); return true; }