void SchroniskoTesty::testAtrybutyKlienta() { Klient klient(123, "Adam", "Kowalski", "ul. Kościelna 12; Bydgoszcz; 85790", 600821340); QCOMPARE( 123, klient.getId() ); QCOMPARE( QString("Adam"), klient.getImie() ); QCOMPARE( QString("Kowalski"), klient.getNazwisko() ); QCOMPARE( QString("ul. Kościelna 12; Bydgoszcz; 85790"), klient.getUlica() ); QCOMPARE( 600821340, klient.getNumerTelefonu() ); QEXPECT_FAIL("", "test na niewłaściwe dane : niezgodny numer Id", Continue); QCOMPARE( 345, klient.getId()); QEXPECT_FAIL("", "test na niewłaściwe dane : niezgodne imie", Continue); QCOMPARE( QString("Kuba"), klient.getImie()); QEXPECT_FAIL("", "test na niewłaściwe dane : niezgodne nazwisko", Continue); QCOMPARE( QString("Nowicki"), klient.getNazwisko() ); QEXPECT_FAIL("", "test na niewłaściwe dane : niezgodna ulica", Continue); QCOMPARE( QString("ul. Sławków 3; Lublin; 44230"), klient.getUlica() ); QEXPECT_FAIL("", "test na niewłaściwe dane : niezgodny numer", Continue); QCOMPARE( 515987464, klient.getNumerTelefonu() ); }
int main(int argc, char *argv[]) { char *localaddr = (char *)"127.0.0.1"; //adres lokalny int client, server; int master_sock; int k=0; if(argc > 1) { for(k=1; k<argc; k++) { tokenize(argv[k]); int localport = atoi(res[0]); //wyniki z tokenize char *remoteaddr = (char *)(res[1]); //wyniki z tokenize int remoteport = atoi(res[2]); //wyniki z tokenize master_sock = serwer_gniazdo(localaddr, localport); if(!fork()) { int potomek=0, status=0; client = czekaj_na_polaczenie(master_sock); server = otworz_host(remoteaddr, remoteport); //if (!(potomek=fork())) // { //POTOMEK printf("przed czekaj_na_polaczenie\n"); klient(client, server); printf("za klientem\n"); close(client); //close(server); //close(master_sock); // } // waitpid(potomek, &status,0); } } } else { printf("Uzycie: port:adres:port"); } return 0; }
//*************************************************************************** // main //*************************************************************************** int main(int argc, char *argv[]) { // zpracovani vstupnich argumentu if (((argc > 1) && (!strcmp(argv[1], "/h"))) || (argc > 2)) pomoc(argv[0]); int port = 0; port = (argc > 1) ? atoi(argv[1]) : 6666; if (port == 0) { printf("Spatny format portu\n"); pomoc(argv[0]); } // vytvoreni socketu int sock_client = 0; int sock_listen = socket(AF_INET, SOCK_STREAM, 0); if (sock_listen == -1) { printf("Nepodarilo se vytvorit socket.\n"); exit(1); } in_addr addr_any = { INADDR_ANY }; sockaddr_in server_addr; server_addr.sin_family = AF_INET; server_addr.sin_port = htons(port); server_addr.sin_addr = addr_any; // smi socket pouzit cislo portu int opt = 1; if (setsockopt(sock_listen, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) < 0) printf("Nelze nastavit vlastnosti socketu.\n"); // prirazeni adresy a portu socketu if (bind(sock_listen, (const sockaddr*) &server_addr, sizeof(server_addr)) < 0) { printf("Prirazeni adresy selhalo.\n"); close(sock_listen); exit(1); } // server bude naslouchat na zadanem portu if (listen(sock_listen, 1) < 0) { printf("Nelze naslouchat na zadanem portu.\n"); close(sock_listen); exit(1); } // vytvoreni semaforu int sem = 0; if ((sem = vytvor_semafory()) < 0) { printf("Nelze vytvorit a inicializovat semafory (%d).\n", sem); close(sock_listen); exit(1); } printf("Server spusten a nastaven ...\n"); printf("Zadejte 'quit' pro ukonceni procesu serveru.\n"); int konec = 1; while (konec) { char buf[128]; // mnozina handlu fd_set pro_in; // vynulovani mnoziny FD_ZERO(&pro_in); FD_SET(STDIN_FILENO, &pro_in); // pridani handlu FD_SET(sock_listen, &pro_in); // vybrani handl, na kterem jsou data if (select(sock_listen + 1, &pro_in, NULL, NULL, NULL) < 0) break; // jsou data na stdin? if (FD_ISSET(STDIN_FILENO, &pro_in)) { // nacist je do bufferu read(STDIN_FILENO, buf, sizeof(buf)); } // ceka nejaky kleint na obslouzeni? else if (FD_ISSET(sock_listen, &pro_in)) { sockaddr_in rsa; int rsa_size = sizeof(rsa); // prijmuti noveho spojeni sock_client = accept(sock_listen, (sockaddr*)&rsa, (socklen_t*)&rsa_size); if ( sock_client == -1 ) { printf("Spojeni se nezdarilo...\n"); close(sock_listen); exit(1); } // delka adresy serveru int lsa = sizeof(server_addr); // ziskani vlastni ip getsockname(sock_client, (sockaddr*)&server_addr, (socklen_t*)&lsa); printf("Server sidli na: '%s:%d'\n", inet_ntoa(server_addr.sin_addr), ntohs(server_addr.sin_port)); // ziskani ip klienta getpeername(sock_client, (sockaddr*)&server_addr, (socklen_t*)&lsa); printf("Novy klient prichazi z: '%s:%d'\n", inet_ntoa(server_addr.sin_addr), ntohs(server_addr.sin_port)); char zprava[128]; sprintf(zprava, "Spojeni navazano ...\n"); write(sock_client, zprava, sizeof(zprava)); int kod = klient(sock_client); // fork a ulozeni pid potomka klient_pid[klient_cnt] = fork(); if (klient_pid[klient_cnt] == 0) // pokracuje klient { // zavreni spojeni serveru close(sock_listen); switch (kod) { case 1: return ctenar(sock_client); case 9: return spisovatel(sock_client); } return 1; } else // pokracuje server { // zavreni spojeni klienta close(sock_client); sock_client = 0; klient_cnt++; } } // byl pozadavek na ukonceni prace serveru? if (!strncasecmp(buf, "quit", 4)) { printf("Server bude ukoncen ...\n"); konec = 0; printf("Cekani na ukonceni prace vsech ctenaru a spisovatelu.\n"); // cekani nez se ukonci vsichni klienti for (int i = 0; i < klient_cnt; i++) { int s; if (klient_pid[i] > 0) waitpid(klient_pid[i], &s, 0); } close(sock_client); break; } } close(sock_listen); if (uvolni_semafory() < 0) { printf("Nelze rusit semafory.\n"); exit(1); } exit(0); }
void SchroniskoTesty::testFunkcjiToStringKlienta() { Klient klient(123, "Józef", "Jung", "ul. Bema 12; Nysa; 42390", 345828740); qDebug() << klient.toString(); }