-
Posts
1451 -
Joined
-
Last visited
-
Days Won
10
Everything posted by Che
-
Visual Studio C++ 2013. Am mai folosit si CodeBlocks dar am renuntat la el. Acum folosesc doar MS Visual Studio C++ 2013, mi se pare cel mai bun.
-
Da, stiu, dar din punct de vedere al limbajului regex nici asta a mea nu e gresita: (?<=<td>).*?(?=<\/td>) Practic ia ce se afla intre cele doua taguri <td></td>. Am testat-o aici si merge: https://regex101.com/ Insa in C++ nu merge. Eu asta te intrebam, de unde stii care anume merge si care nu merge in C++ ? Ca spre exemplu, aici: https://regex101.com/ are doar pentru js si python. Este si vreun tester de asta ptr. C++ ? Care ? LE: Acum am observat ca e dublu post. Am incercat sa-l sterg si sa le unesc dar nu merge. Scuze.
-
@MrGrj 1. Cum faci ca expresia sa mearga pana la sfarsitul randului ca daca ii dau ca input de exemplu mai multe unitati de astea: <td>text</text> <td>text</text> <td>text</text> <td>text</text> mi-o ia doar pe prima si afiseaza text si atat ? Cum fac sa afiseze text de atatea ori cat este pe acel rand ? 2. Dar daca sunt mai multe randuri, sa zicem un tabel, cum faci ca sa ia toate randurile ? 3. Dar ca sa ia toate randurile sa le bage intr-o matrice a[n] pe fiecare ? Trebuie cu for loop sau se poate din prima ?
-
Merge. Multumesc ! Dar tu de unde stii ? Unde scrie ca expresia trebuia asa si nu asa cum am scris-o eu ? Cum ai transformat-o ca sa mearga ? @MrGrj La fel. ^
-
Vreau sa folosesc o expresie in C++ care sa preia un text (numere, cifre, - si _) dintr-un tabel html gen: <td>text</text> <td>text</text> <td>text</text> <td>text</text> <td>text</text> <td>text</text> <td>text</text> <td>text</text> <td>text</text> Nu resuesc sa-l fac sa mearga. I-am faut debug si se pare ca expresia in regex nu-i in regula. Aici crapa: regex e("(?<=<td>).*?(?=<\/td>)"); Stie cineva cum trebuie scrisa ? Multumesc ! Un An Nou Fericit ! Sarbatori Fericite !
-
La multi ani ! Un An Nou Fericit ! Sarbatori Fericite !
-
The C++ Network Library Project Overview The project aims to build upon the latest C++ standard (currently C++11) to provide easy to use libraries for network programming. We use the latest compiler versions and features with an eye on pushing the boundaries on leveraging what's available in C++. Currently the library contains an HTTP client and server implementation, a stand-alone URI library, a network message framework, and some concurrency tools. The project welcomes contributions from people interested in joining the effort. See the section on Project Policies for more information on getting involved. Mai multe aveti aici: cpp-netlib: The C++ Network Library Cautam acum ceva timp sa fac un program care sa citeasca sursa unei pagini web: https://rstforums.com/forum/94545-c-ajutor-network-connection-ping-check-online-si-request-timeout.rst Pana la urma am reusit cu ajutorul baietilor de pe forum. Dar cautand eu pe net cum sa fac chestia asta am dat si peste aceasta librarie cu care se poate crea un program de asta de tip client (chiar si unul de tip server) cu care sa faci astfel de conexiuni, requesturi etc. Se realizeaza ceea ce vrei muuult mai usor. Un exemplu aveti aici: #include <boost/network/protocol/http/client.hpp> #include <string> #include <iostream> int main() { boost::network::http::client client; boost::network::http::client::request request("http://www.example.com"); request << boost::network::header("Connection", "close"); boost::network::http::client::response response = client.get(request); std::cout << body(response); } sursa: How can I fetch data from a website inside a C++ program - Stack Overflow Pare usor de folosit insa nu am folosit aceasta librarie fiindca mi se pare mult mai mare decat daca ai face direct in C++, insa pentru incepatori e foarte buna. Si ai de descarcat si ptr. Linux si pentru Windows.
-
Exact. Pe langa retard mental i-o fi dat careva si niste paduchi de aia lati, turtiti sau cum se cheama.
-
@Nytro Am inteles, nu mai bagati Tapatalk din cauza problemelor de securitate. Dar nu puteti face designul forumului sa fie responsiv ca la softpedia de exemplu, adica atunci cand il vezi cu un monitor de o anumita dimensiune (si ma refer aici si la tableta si telefon) sa se modifice ca sa poate fi usor de citit ?
-
Eu nu stiu nimic si nici nu am mai auzit pana acuma de asa ceva si te rog mul sa-mi raspunzi la acest intrebari: 1. De unde stiu ca ceea ce spui tu e adevarat si e sigur de investit si nu ramai cu banii dati si cu buza umflata ? 2. E un fel de MLM, PPC, PPI, alt cacat gen Caritas ? Sau vreun site in care bagi bani si nu-i mai vezi inapoi ? 3. Ce e revenu share ? Cu ce se ocupa mai exact un astfel de site si din ce vin banii ? Ce trebuie sa faci ? 4. Trebuie sa ai un site pe care sa le vinzi lor spatiu publicitar sau despre ce e vorba ? 5. De ce am alege acest site oferit de tine si nu GlobalAdShare de care ai zis la inceput ? Care e diferenta intre cele doua ? 6. $24 intr-o luna e putin. Dar putin de tot. De ce nu bagi mai mult daca esti asa e sigur ca e de incredere ? 7. Daca se fac asa de multi bani pe situl asta de ce umbli cu linkuri de referali ? De obicei siturile care nu prea platesc si nici din care nu prea se fac bani apeleaza la promovarea cu referalii (vezi PPC). Multumesc !
-
Sunt gratis cursurile sau trebuie sa platesti ?
-
Nu fi suparat. Cred ca te lasa sa mananci pestele...
-
[C++] [AJUTOR] Network connection: Ping, check online si request timeout ?
Che replied to Che's topic in Programare
Multumesc pentru ajutor ! @Nytro Ma pun acuma si pe citit linkul pe care mi l-ai dat ca sa inteleg ce si cum. Beej's Guide to Network Programming Multumesc ! -
Cu sau fara bani ?
-
Ma, e cu porn sau nu, ca sa stiu daca se merita ?
-
[C++] [AJUTOR] Network connection: Ping, check online si request timeout ?
Che replied to Che's topic in Programare
@Nytro Am reusit si am modificat codul asa cum am vrut eu: #define _CRT_SECURE_NO_DEPRECATE #define _CRT_SECURE_NO_WARNINGS #include <WinSock2.h> #include <WinInet.h> #include <windows.h> #include <string> #include <stdio.h> #define bzero(b,len) (memset((, '\0', (len)), (void) 0) using std::string; HINSTANCE hInst; WSADATA wsaData; int iResult; u_long iMode = 1; void mParseUrl(char *mUrl, string &serverName, string &filepath, string &filename) { string::size_type n; string url = mUrl; if (url.substr(0, 7) == "http://") url.erase(0, 7); if (url.substr(0, 8) == "https://") url.erase(0, 8); n = url.find('/'); if (n != string::npos) { serverName = url.substr(0, n); filepath = url.substr(n); n = filepath.rfind('/'); filename = filepath.substr(n + 1); } else { serverName = url; filepath = "/"; filename = ""; } } SOCKET connectToServer(char *szServerName, WORD portNum) { struct hostent *hp; unsigned int addr; struct sockaddr_in server; SOCKET conn; struct timeval tv; tv.tv_sec = 3; tv.tv_usec = 0; int error; //se incearca stabilirea adresei serverului: if (inet_addr(szServerName) == INADDR_NONE) { hp = gethostbyname(szServerName); } else { addr = inet_addr(szServerName); hp = gethostbyaddr((char*)&addr, sizeof(addr), AF_INET); } //cream un socket: conn = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (conn == INVALID_SOCKET){ printf("Error at socket(): %ld\n", WSAGetLastError()); WSACleanup(); return NULL; } //mentinem socketul unblocked pentru a crea conexiuni: iResult = ioctlsocket(conn, FIONBIO, &iMode); if (iResult != NO_ERROR) printf("ioctlsocket failed with error: %ld\n", iResult); //daca adresa serverului nu este nula se incearca conexiunea: if (hp != NULL){ //se stabilesc parametrii conexiunii: server.sin_addr.s_addr = *((unsigned long*)hp->h_addr); server.sin_family = AF_INET; server.sin_port = htons(portNum); if (server.sin_addr.s_addr != -1) { bzero(&(server.sin_zero), 8); setsockopt(iResult, SOL_SOCKET, SO_RCVTIMEO, (char *)&tv, sizeof(tv)); setsockopt(iResult, SOL_SOCKET, SO_SNDTIMEO, (char *)&tv, sizeof(tv)); error = connect(conn, (struct sockaddr *) &server, sizeof (struct sockaddr)); if (error == -1) return conn; if (connect(conn, (struct sockaddr*)&server, sizeof(server))) //diferit de zero sau false => cand e bun da 1 { wprintf(L"bind failed with error %u\n", WSAGetLastError()); closesocket(conn); WSACleanup(); return NULL; } } } if (hp == NULL) { printf("Invalid IP address.\n"); closesocket(conn); return NULL; } return conn; } int getHeaderLength(char *content) { const char *srchStr1 = "\r\n\r\n", *srchStr2 = "\n\r\n\r"; char *findPos; int ofset = -1; findPos = strstr(content, srchStr1); if (findPos != NULL) { ofset = findPos - content; ofset += strlen(srchStr1); } else { findPos = strstr(content, srchStr2); if (findPos != NULL) { ofset = findPos - content; ofset += strlen(srchStr2); } } return ofset; } char *readUrl2(char *szUrl, long &bytesReturnedOut, char **headerOut) { const int bufSize = 512; char readBuffer[bufSize], sendBuffer[bufSize], tmpBuffer[bufSize]; char *tmpResult=NULL, *result; SOCKET conn; string server, filepath, filename; long totalBytesRead, thisReadSize, headerLen; mParseUrl(szUrl, server, filepath, filename); ///////////// step 1, connect ////////////////////// conn = connectToServer((char*)server.c_str(), 80); if (conn==NULL) { printf("Ceva nu a mers bine.\n"); return 0; } ///////////// step 2, send GET request ///////////// sprintf_s(tmpBuffer, "GET %s HTTP/1.0", filepath.c_str()); strcpy_s(sendBuffer, tmpBuffer); strcat_s(sendBuffer, "\r\n"); sprintf_s(tmpBuffer, "Host: %s", server.c_str()); strcat_s(sendBuffer, tmpBuffer); strcat_s(sendBuffer, "\r\n"); strcat_s(sendBuffer, "\r\n"); send(conn, sendBuffer, strlen(sendBuffer), 0); printf("Buffer being sent:\n%s", sendBuffer); ///////////// step 3 - get received bytes //////////////// // Receive until the peer closes the connection totalBytesRead = 0; while (1) { memset(readBuffer, 0, bufSize); thisReadSize = recv(conn, readBuffer, bufSize, 0); if (thisReadSize <= 0) break; tmpResult = (char*)realloc(tmpResult, thisReadSize + totalBytesRead); memcpy(tmpResult + totalBytesRead, readBuffer, thisReadSize); totalBytesRead += thisReadSize; } headerLen = getHeaderLength(tmpResult); long contenLen = totalBytesRead - headerLen; result = new char[contenLen + 1]; memcpy(result, tmpResult + headerLen, contenLen); result[contenLen] = 0x0; char *myTmp; myTmp = new char[headerLen + 1]; strncpy(myTmp, tmpResult, headerLen); myTmp[headerLen] = NULL; delete(tmpResult); *headerOut = myTmp; bytesReturnedOut = contenLen; closesocket(conn); return(result); } int main() { const int bufLen = 1024; char *szUrl = "http://www.piticigratis.com/"; long fileSize; char *memBuffer, *headerBuffer; FILE *fp; memBuffer = headerBuffer = NULL; if (WSAStartup(0x101, &wsaData) != 0) return -1; iResult = WSAStartup(MAKEWORD(2, 2), &wsaData); if (iResult != NO_ERROR){ printf("Error at WSAStartup()\n"); return NULL; } memBuffer = readUrl2(szUrl, fileSize, &headerBuffer); if (memBuffer!=NULL) { printf("returned from readUrl\n"); printf("data returned:\n%s", memBuffer); if (fileSize != 0) { printf("Got some data\n"); fp = fopen("downloaded.file", "wb"); fwrite(memBuffer, 1, fileSize, fp); fclose(fp); delete(memBuffer); delete(headerBuffer); } } if (memBuffer==NULL) { printf("Cannot download anything !\n"); } WSACleanup(); system("PAUSE"); return 0; } Se compileaza fara erori si face exact ceea ce vroiam eu sa faca. Numai ca acum a aparut o problema cat se poate de ciudata pe care nu o pot rezolva si pentru care cer ajutor: Daca rulez executabilul asa cum e el, se deschide si da crash. Daca il rulez din compilator cu comanda "Start without debugging" tot la fel, imi da crash. Am zis ca e musai o problema, as aca l-am luat in debugger sa vad ce are. Ciudatenia e ca in debugger nu mai crashuieste si face exact ceea ce vroiam eu sa faca. Daca il scot din debugger si il rulez ca atare imi crashuieste. Pun si o imagine: Iar cand il rulez ca atare, fara sa ii fac debug: -
[C++] [AJUTOR] Network connection: Ping, check online si request timeout ?
Che replied to Che's topic in Programare
Unde ? -
@misefalfaieAsta e o comanda valabila ? !a2b(!aer(!armon(!atom(!b2a(!b64(!caesar(!esab <e/d> <text> (returns encrypted/decrypted ESAB 46 text))))))))) Si unde e botul asta ca sa ma joc si eu cu el ?
-
[C++] [AJUTOR] Network connection: Ping, check online si request timeout ?
Che replied to Che's topic in Programare
Si adica asta iti determina daca serverul e online sau nu ? ioctlsocket function (Windows) Nu e scris de mine codul, am vazut ca e initializat cu NULL. Dar intreb, ca nu prea ma pricep, e vreo problema sau ce vrei sa spui ? Cu ce ar trebui sa-l initializez ? -
Va rog mult sa ma ajutati cu codul asta ca de dimineata, pardon, de ieri seara, imi bat capul cu el si nu reusesc sa-l fac sa mearga. Asta este codul: #define _CRT_SECURE_NO_DEPRECATE #define _CRT_SECURE_NO_WARNINGS #include <WinSock2.h> #include <WinInet.h> #include <windows.h> #include <string> #include <stdio.h> using std::string; HINSTANCE hInst; WSADATA wsaData; void mParseUrl(char *mUrl, string &serverName, string &filepath, string &filename) { string::size_type n; string url = mUrl; if (url.substr(0, 7) == "http://") url.erase(0, 7); if (url.substr(0, 8) == "https://") url.erase(0, 8); n = url.find('/'); if (n != string::npos) { serverName = url.substr(0, n); filepath = url.substr(n); n = filepath.rfind('/'); filename = filepath.substr(n + 1); } else { serverName = url; filepath = "/"; filename = ""; } } SOCKET connectToServer(char *szServerName, WORD portNum) { struct hostent *hp; unsigned int addr; struct sockaddr_in server; SOCKET conn; conn = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (conn == INVALID_SOCKET) return NULL; if (inet_addr(szServerName) == INADDR_NONE) { hp = gethostbyname(szServerName); } else { addr = inet_addr(szServerName); hp = gethostbyaddr((char*)&addr, sizeof(addr), AF_INET); } if (hp == NULL) { closesocket(conn); return NULL; } server.sin_addr.s_addr = *((unsigned long*)hp->h_addr); server.sin_family = AF_INET; server.sin_port = htons(portNum); if (connect(conn, (struct sockaddr*)&server, sizeof(server))) { closesocket(conn); return NULL; } return conn; } int getHeaderLength(char *content) { const char *srchStr1 = "\r\n\r\n", *srchStr2 = "\n\r\n\r"; char *findPos; int ofset = -1; findPos = strstr(content, srchStr1); if (findPos != NULL) { ofset = findPos - content; ofset += strlen(srchStr1); } else { findPos = strstr(content, srchStr2); if (findPos != NULL) { ofset = findPos - content; ofset += strlen(srchStr2); } } return ofset; } char *readUrl2(char *szUrl, long &bytesReturnedOut, char **headerOut) { const int bufSize = 512; char readBuffer[bufSize], sendBuffer[bufSize], tmpBuffer[bufSize]; char *tmpResult = NULL, *result; SOCKET conn; string server, filepath, filename; long totalBytesRead, thisReadSize, headerLen; mParseUrl(szUrl, server, filepath, filename); ///////////// step 1, connect ////////////////////// conn = connectToServer((char*)server.c_str(), 80); ///////////// step 2, send GET request ///////////// sprintf_s(tmpBuffer, "GET %s HTTP/1.0", filepath.c_str()); strcpy_s(sendBuffer, tmpBuffer); strcat_s(sendBuffer, "\r\n"); sprintf_s(tmpBuffer, "Host: %s", server.c_str()); strcat_s(sendBuffer, tmpBuffer); strcat_s(sendBuffer, "\r\n"); strcat_s(sendBuffer, "\r\n"); send(conn, sendBuffer, strlen(sendBuffer), 0); // SetWindowText(edit3Hwnd, sendBuffer); printf("Buffer being sent:\n%s", sendBuffer); ///////////// step 3 - get received bytes //////////////// // Receive until the peer closes the connection totalBytesRead = 0; while (1) { memset(readBuffer, 0, bufSize); thisReadSize = recv(conn, readBuffer, bufSize, 0); if (thisReadSize <= 0) break; tmpResult = (char*)realloc(tmpResult, thisReadSize + totalBytesRead); memcpy(tmpResult + totalBytesRead, readBuffer, thisReadSize); totalBytesRead += thisReadSize; } headerLen = getHeaderLength(tmpResult); long contenLen = totalBytesRead - headerLen; result = new char[contenLen + 1]; memcpy(result, tmpResult + headerLen, contenLen); result[contenLen] = 0x0; char *myTmp; myTmp = new char[headerLen + 1]; strncpy(myTmp, tmpResult, headerLen); myTmp[headerLen] = NULL; delete(tmpResult); *headerOut = myTmp; bytesReturnedOut = contenLen; closesocket(conn); return(result); } int main() { const int bufLen = 1024; char *szUrl = "http://www.piticigratisi.com/"; long fileSize; char *memBuffer, *headerBuffer; FILE *fp; memBuffer = headerBuffer = NULL; if (WSAStartup(0x101, &wsaData) != 0) return -1; memBuffer = readUrl2(szUrl, fileSize, &headerBuffer); printf("returned from readUrl\n"); printf("data returned:\n%s", memBuffer); if (fileSize != 0) { printf("Got some data\n"); fp = fopen("downloaded.file", "wb"); fwrite(memBuffer, 1, fileSize, fp); fclose(fp); // SetDlgItemText(hwndDlg, IDC_EDIT4, headerBuffer); // SetDlgItemText(hwndDlg, IDC_EDIT5, memBuffer); delete(memBuffer); delete(headerBuffer); } WSACleanup(); system("PAUSE"); return 0; } Am cautat alte coduri sursa pe net, alte probleme asemanatoare si tot nu am reusit sa le combin sa iasa un singur program. Cum anume va rog sa-l modificati: 1. Daca ii dai un host oarecare nu-si da seama daca hostul este online sau nu si iti da crash. Daca ii bagi un server fals cum am facut eu (piticigratisi) iti crapa. Vreau sa poata detecta daca serverul respectiv este online sau nu si doar daca e online sa execute codul, altfel sa printeze ca serverul nu e online. 2. La fel pentru conexiune, daca s-a intrerupt cumva conexiunea sa anunte ca s-a intrerupt conexiunea. 3. Sa aiba un time request ca asa sta non stop pentru raspunsul de la server. Sa fie gen 30 de secunde si daca dupa 30 de secunde nu a primit raspuns de la server atunci sa anunte request timeout. Atata tot. va rog eu mult, m-am chinuit toata ziua. Nu mai pot. Multumesc mult de tot !
-
Am gasit pe net aceste doua tutoriale despre cum sa faci un dll si cum sa-l folosesti in aplicatia ta: Walkthrough: Creating and Using a Dynamic Link Library (C++) si Basic C++ Win32 DLL - CodeProject Vad ca la cel de pe MSDN headerul e de forma urmatoare: // MathFuncsDll.h #ifdef MATHFUNCSDLL_EXPORTS #define MATHFUNCSDLL_API __declspec(dllexport) #else #define MATHFUNCSDLL_API __declspec(dllimport) #endif Si zice ca: In celalalt tutorial headerul e de forma urmatoare: namespace MyWin32DLL { class MyWin32ClassOne { private: int varone; public: __declspec(dllexport) MyWin32ClassOne();//constructor __declspec(dllexport) void Setvar(int val); __declspec(dllexport) int Getvar(); }; } 1. Cum e mai bine sa fie headerul construit: ca in prima situatie sau ca in a doua ? 2. Daca ar fi sa transformi headerul al doilea asa de felul cum arata cel de primul, cum ar trebui sa arate ? Ma poate ajuta cineva cu chestia asta ? Multumesc mult !
-
Am gasit astea pe Youtube si am zis sa le pun si pe forum ca mi se par interesante: 1. Asta e cu cel care a inventat C++ (eu credeam ca e mort ca asa crezi despre astia celebri dar vad ca e cat se poate de viu ) : 2. Asta este despre C++-ul modern: 3. Write C++ code Quickly:
-
Parca vroiati cativa de pe RST la un moment dat sa faceti un chat SECURE cu flux de date perfect criptat. Ma gandesc ca asta ar fi o solutie. ^^
-
Am gasit pe net un cod in C++ si vad ca programatorul respectiv foloseste un anumit semn despre care eu stiam sa se foloseste in #include <math.h> pentru ridicare la putere. Insa aici pare ca face cu totul altceva. Ce anume face semnul asta ^ ? Cum s-ar traduce ? Multumesc !
-
Trebuie sa fie un subiect tare interesant de te-a facut dupa 9 ani sa faci primul post.