int createTcpServerSocket(char *hostName, unsigned short port, struct sockaddr_in *sin, int qlen) { int socketFd; if ((socketFd = createTcpSocket(hostName, port, (struct sockaddr_in *) sin)) == -1) { return -1; } int opt = 1; if (setsockopt (socketFd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(int)) == -1) { perror("setsockopt"); return -1; } if (bind(socketFd, (struct sockaddr *) sin, sizeof(*sin)) < 0) { perror("Bind socket error"); return -1; } if (listen(socketFd, qlen) == -1) { perror("Socket passive mode error"); return -1; } return socketFd; }
int establishConnection(){ int serverSock,clientSock; serverSock=createTcpSocket(); bindToIpv4(serverSock,ip_addr,port_no); startListening(serverSock,2); clientSock=acceptConnections(serverSock); return clientSock; }
int main() { char url[200]; char buf[BUFSIZ+1]; int port = 80; struct sockaddr_in serverAddress; struct hostent* dnsResolved; printf("Enter the url to acces the images from\n"); printf("Ex: http://www-archive.mozilla.org/quality/networking/testing/datatests.html\n"); scanf("%s",url); printf("length of url is %d\n",strlen(url)); char domainname[strlen(url)]; char *page = (char *)malloc(strlen(url)); //puts(url); getDomainName(url,domainname,page); printf("The domain name is %s\n",domainname); char *ip = (char *)malloc(strlen(url)); char *isDomainName = strstr(domainname, "www"); if(isDomainName != NULL) { getHostIP(domainname,&dnsResolved); ip = (char *)inet_ntoa(dnsResolved->h_addr_list[0]);//"127.0.0.1"; printf("the Ip is %s\n",inet_ntoa(dnsResolved->h_addr_list[0])); } else { ip = domainname; } int sockid = createTcpSocket(); assignAddressToSocket(sockid,&serverAddress,port,"127.0.0.1"); connectSocket(sockid,(struct sockaddr *) &serverAddress,(int)sizeof(serverAddress)); char *getQuery = build_get_query(ip,page); sendQuery(sockid,getQuery); fetchHtmlPage(sockid,buf); int status = closeSocket(sockid); return 0; }
int wds_open() { // Create the structure for connecting to the forwarded 9999 port sockaddr_in addr; createTcpSocket(addr, DEFAULT_WDS_PORT); // Create our socket int fd = socket(PF_INET, SOCK_STREAM, 0); if (fd < 0) { log_errno("Failed to create file descriptor"); return -1; } // Connect to the remote wds server thread if (connect(fd, (sockaddr*)&addr, sizeof(addr)) < 0) { log_errno("Failed to connect to remote debug server"); return -1; } return fd; }
void sendFileTCP(char *serverName, unsigned int serverPort, char *filePath) { struct sockaddr_in serverAddress; if ((TcpSocketDescr = createTcpSocket(serverName, serverPort, &serverAddress)) == -1) { fprintf(stderr, "Creation socket error\n"); exit(EXIT_FAILURE); } if (connect (TcpSocketDescr, (struct sockaddr *) &serverAddress, sizeof(serverAddress)) < 0) { perror("connect"); exit(EXIT_FAILURE); } FILE *file = fopen(filePath, "r+"); if (file == NULL) { perror("Open file error"); exit(EXIT_FAILURE); } long fileSize = GetFileSize(file); char replyBuf[replyBufSize]; sprintf(replyBuf, "%s:%ld", basename(filePath), fileSize); // Send file name and file size if (send(TcpSocketDescr, replyBuf, sizeof(replyBuf), 0) == -1) { perror("Send error"); exit(EXIT_FAILURE); } char buf[bufSize]; long totalBytesSent = 0; size_t bytesRead; int middle = (fileSize / bufSize) / 2; if (middle == 0) middle = 1; // Sending file printf("Start sending file.\n"); int i = 0; while (totalBytesSent < fileSize) { bytesRead = fread(buf, 1, sizeof(buf), file); int sentBytes = send(TcpSocketDescr, buf, bytesRead, 0); if (sentBytes < 0) { perror("Sending error\n"); exit(EXIT_FAILURE); } totalBytesSent += sentBytes; // Send OOB data in the middle of sending file if (++i == middle) { printf("Sent OOB byte. Total bytes sent: %ld\n", totalBytesSent); sentBytes = send(TcpSocketDescr, "!", 1, MSG_OOB); if (sentBytes < 0) { perror("Sending error"); exit(EXIT_FAILURE); } } } printf("Sending file completed. Total bytes sent: %ld\n", totalBytesSent); close(TcpSocketDescr); fclose(file); }
int establishConnection(){ sock=createTcpSocket(); connectToIpv4(sock,ip_addr,port_no); return sock; }
int main(int argc, char* argv[]) { struct prg_data prg; struct sigListenConfig lconf; prg.sigData = calloc( 1, sizeof(struct sig_data) ); prg.mediaCnf = calloc( 1, sizeof(struct mediaConfig) ); /* struct mediaConfig mconf; */ /* struct addrinfo servinfo, * p; */ /* Intializes random number generator */ time_t t; srand( (unsigned) time(&t) ); /* struct sockaddr_storage taddr; */ /* Set up the pointer(s).. */ lconf.prg = &prg; /* lconf.mconf = &mconf; */ pthread_t sigSocketListenThread; pthread_t stunTickThread; pthread_t iceTickThread; /* pthread_t turnTickThread; */ if (argc < 3) { fprintf(stderr,"usage: icebox hostname user remoteuser\n"); exit(1); } lconf.sigsock = createTcpSocket(argv[1], SERVERPORT); lconf.signal_path_handler = signalPathHandler; /* lconf.msock = createUdpSocket(argv[1], */ /* STUNPORT, */ /* "turnclient", */ /* 0, */ /* &servinfo, */ /* &p); */ /* if (lconf.msock == -1) */ /* { */ /* return 1; */ /* } */ /* else if (lconf.msock == -2) */ /* { */ /* return 2; */ /* } */ pthread_create(&sigSocketListenThread, NULL, sigSocketListen, (void*)&lconf); strncpy(prg.user, argv[2], MAX_USER_LEN); registerUser(&prg.sigData->state, lconf.sigsock, prg.user); /* Setup ICE */ ICELIB_CONFIGURATION iceConfig; iceConfig.tickIntervalMS = 20; iceConfig.keepAliveIntervalS = 15; iceConfig.maxCheckListPairs = ICELIB_MAX_PAIRS; iceConfig.aggressiveNomination = false; iceConfig.iceLite = false; iceConfig.logLevel = ICELIB_logDebug; /* iceConfig.logLevel = ICELIB_logDisable; */ prg.mediaCnf->icelib = malloc( sizeof(ICELIB_INSTANCE) ); ICELIB_Constructor(prg.mediaCnf->icelib, &iceConfig); /* ICELIB_setCallbackLog(prg.mediaCnf->icelib, */ /* ICELIB_printLog, */ /* NULL, */ /* ICELIB_logDebug); */ ICELIB_setCallbackOutgoingBindingRequest(prg.mediaCnf->icelib, sendConnectivityCheck, &prg); ICELIB_setCallbackOutgoingBindingResponse(prg.mediaCnf->icelib, sendConnectivityResp, &prg); ICELIB_setCallbackConnecitivityChecksComplete(prg.mediaCnf->icelib, complete, &prg); ICELIB_setCallbackNominated(prg.mediaCnf->icelib, nominated, &prg); ICELIB_setCallbackOutgoingCancelRequest(prg.mediaCnf->icelib, cancelSTUNtrans, &prg); /* Setup stun */ StunClient_Alloc(&prg.mediaCnf->stunInstance); /* StunClient_RegisterLogger(prg.mediaCnf->stunInstance, */ /* stunLog, */ /* &prg); */ /* Signal path set up, time to gather the candidates */ /* Turn setup */ /* if ( 0 != getSockaddrFromFqdn( (struct sockaddr*)&taddr, argv[1] ) ) */ /* { */ /* printf("Error getting TURN Server IP\n"); */ /* return 1; */ /* } */ /* TurnClient_StartAllocateTransaction(&lconf.turnInst, */ /* 50, */ /* turnInfoFunc, */ /* "icebox", */ /* &lconf.msock, / * *userCtx * / */ /* (struct sockaddr*)&taddr, */ /* / "test\0", / *argv[2],* / */ /* "pass\0", / *argv[2],* / */ /* AF_INET, */ /* turnSendFunc, */ /* turnCbFunc, */ /* false, */ /* 0); */ /* pthread_create(&turnTickThread, NULL, tickTurn, (void*)lconf.turnInst); */ pthread_create(&stunTickThread, NULL, tickStun, (void*)prg.mediaCnf->stunInstance); pthread_create(&iceTickThread, NULL, tickIce, (void*)prg.mediaCnf->icelib); if (argc == 4) { /* Ok got nothing better to do. Busywaiting */ while (prg.sigData->state != REGISTERED) { } char* sdp = NULL; harvest(prg.mediaCnf->icelib); printf("Completed harvesting\n"); crateCandidateJson(prg.mediaCnf->icelib, &sdp); /* Start to listen here.. */ pthread_create(&prg.mediaCnf->mSocketListenThread, NULL, mSocketListen, (void*)prg.mediaCnf); inviteUser(&prg.sigData->state, lconf.sigsock, argv[3], prg.user, sdp); if (sdp != NULL) { free(sdp); } } /* Just wait a bit for now.. */ sleep(100); printf("Done sleeping teardown\n"); close(lconf.sigsock); StunClient_free(prg.mediaCnf->stunInstance); free(prg.mediaCnf); free(prg.sigData->sdp); free(prg.sigData->msgBuf); free(prg.sigData); return 0; }