winsock , winsock2

0

Czytalem wiele kursow na temat winsock, lecz nie umiem tego przelozyc na program. Mogłby ktos mi napisac program z pelnym uzyciem winsock ... winsock2 , ktory odbiera , laczy sie itd...

0

Chociazby to : http://www.binboy.org/forum/viewtopic.php?t=3362 tutaj masz kurs po [b]polsku[/b] http://klepisko.eu.org/~bartek/bgnet/html/index.html a poza tym <url>www.google.com</url>

0

Wielkie dzieki juz lece czytac :) co do google.pl tak znam ta www i 100% polskich sa , ale nie ma... :) a angielskie mam troche klopoty :(

Qfda :/ nie jarzem tego noczy tak pol na pol np:
int bind(int sockfd, struct sockaddr *my_addr, int addrlen);
potem pisze:
sockfd to deskryptor gniazda zwrócony przez socket(). my_addr to wskaźnik na struct sockaddr, który zawiera informacje o twoim adresie, a dokładniej porcie i adresie IP. addrlen może być ustawiony na wartość sizeof(struct sockaddr).
a tak nawiasem mowiac to fajnie wiem ze bind to port na jakim dzialam lecz nie wiem kiedy to wywolac jak to wywolac zeby ustalic czy sprawdzic port (nawet to nie pisze) czy mam dac to na poczatku programu jak to wlaczyc wylaczyc zmienic... :/

0

Bind ma zupelnie inne znaczenie niz wiesz :d
Jesli powyzszy kurs w pl i ten tutaj : http://www.linuxpl.org/LPG/node81.html nic Ci dalej nie powiedza to zapomnij o snifferze !!!! Te dwa kursy zawieraj wlasciwie wszystko by zakumac programowanie sieciowe i napisac aplikacje client-serwer nawet bardzo zaawansowana.

0

No moze nie port :P no widisz czytlem 2 kursy co mi napisales i ch** :P

snaj: czytalem ten kurs i wiesz co powoli rozumiem :D, lecz to jest pod lina, a nie wina (winsock), ale dalej winsocka jakby nie rozumiem?? :-8

0

Linux winda jeden ch.. !! Przynajmniej jesli chodzi o network. Winsock tym sie
rozni (to zreszta jest napisane w jednym z tych kursow !!) ze przed korzystaniem
z socket() itp musisz wywolac WSAStartup(...) zakonczyc WSACleanup(...) a miedzy
nimi mozesz bez przeszkod korzystac z write, read, bind, send itp (poza kilkoma
wyjatkami np. select ). Pod Winda zamiast tych wszystkich linusowych headerow
inkludujesz winsock lub winsock2 i jestes w domu.

Winsock FAQ : http://tangentsoft.net/wskfaq/ ja swoja wiedze niestety tez
nie posiadam od urodzenia :(, tylko czytajac i wnikajac mozna sie czegos nauczyc -
i nikt nie mowi ze jest to dla kazdego tak samo latwe !!

0

Dzieki snaj!! :)
Mam taka prosba do ciebie, zapewne nie pamietasz, ale odpowiadales mi na pewien temat, przez przypadek zostal skasowany pamietasz co tam pisales? Jesli nie trudno bo to raczej wszytkiego sie nie pamieta ;)
Ale odpowiedziales mi na takie cos:

ze w delphi to wyglada tak:

for i := 1 to Length(zaszyfrowane) do 
begin
cos := zaszyfrowane[i] + zaszyfrowane[i+1] + zaszyfrowane[i+2] + zaszyfrowane[i+3] + zaszyfrowane[i+4] + zaszyfrowane[i+5];
if cos = 'Number' then
 begin
 poczatek := i + 8;
 end;

jesli zauwarzysz to i to jest w petli for i idzie co jeden wiecej od 0 do kona tablicy zaszyfrowane, i sprawdza czy i potem i + 1 ... to Number
potem natomiast, przypisuje ze poczateek to i (czyli tablica[cyfr] z litery n) plus 8

jak to zrobic w C? Moj pomysl to (o strstr tez mi pisales :)):

  wskaz = strstr(caly_plik,haslo2);
  wskaz += 11;
  koniec = wskaz + 30;
  for (i=*wskaz,j=0;i<=*koniec;i++,j++)
  {
  pass2[j] = *odszyfr_haslo2(caly_plik[i]);
  }

lecz funckja:

 char *odszyfr_haslo2(char *text2); {
   if (text2 == "PL" ) { text2 = "ż"; }
   return(text2);
   }
musi byc wskanikiem poniewarz dalszy jej ciag to  sprawdzenie czy text2 np. "PL" jest i jak tak to text2 = ż    //chyba ze mozna to inaczej

pass2[j] = *odszyfr_haslo2(caly_plik[i]); //tu jest klopot funkcja to wskaznik a pass2[34] to tablica i jest blad przy kompilacji nawet ze dalem przed fukcja wskaznikiem * umiesz pomoc??Jesli zbytnio nie rozumiesz, napisz to moge ci zrodlo mailem przeslec oczywiscie duze nie jest, lecz jak obejrzysz zrozumiesz :)

0
for i := 1 to Length(zaszyfrowane) do 
begin
cos := zaszyfrowane[i] + zaszyfrowane[i+1] + zaszyfrowane[i+2] + zaszyfrowane[i+3] + zaszyfrowane[i+4] + zaszyfrowane[i+5];
if cos = 'Number' then
begin
poczatek := i + 8;
end;

Dokladna przerobka tego na C :

char zaszyfrowane[]="asdasdNumberasdadas";
int poczatek = strstr(zaszyfrowane,"Number") - zaszyfrowane  + 8;
// poczatek = 14; 
// jesli poczatek ma byc wskaznikeim na lancuch to :
char *poczatek = strstr(zaszyfrowane,"Number") + 8;
// poczatek wskazuje na "dadas"
// chyba zrozumiale dlaczego ;)

i po problemie ;) ofcoz nie obsluzylem warunku ze "Number" w ogole nie ma w
zaszyfrowanych, poza tym w delphi(pascal) w tablicy indeksy od 1 a w C od 0 !!

for (i=*wskaz,j=0;i<=*koniec;i++,j++)
  {
  pass2[j] = *odszyfr_haslo2(caly_plik[i]);
  }

lecz funckja:
  char *odszyfr_haslo2(char *text2); {
   if (text2 == "PL" ) { text2 = "ż"; }
   return(text2);
   }

co do powyzszego to czarna magia jesli chodzi o sens i cel tego :)
ALe kilka uwag :

  • jesli pass2 zdefiniujesz jako char** i odpowiednio zaalokujesz pamiec to nie ma porblemu,
  • tylko ze wtedy pass2[j] = odszyfr_haslo2(caly_plik[i]); wywal ta "" !!!! i juz bedzie OK,
  • odszyfr_haslo2(caly_plik[i]); caly_plik[i] musialby byc char** zeby to zadzialalo !!
    jesli jest to po prostu char* wiec caly_plik[i] to po prostu char a nie jak tego oczekuje
    funkcja odszyfr_haslo2() char* !!! Wiec jak cos to powinno byc odszyfr_haslo2(&caly_plik[i]);
  • co do odszyfr_haslo2 to :
  • if (text2 == "PL" ) tutaj powinno byc strstr !!!
  • text2 = "ż"; nie jestem pewny czy tego naprawde chcesz ?! teraz wszystko co bylo w text2
    poszlo sie .... i masz zamiast tego "ż" !!
  • jesli chcesz tylko podmienic w text2 znaki "PL" na "ż" to musisz najpierw odnalezc
    "PL" za pomoca strstr podmienic "P" text2[cos] = "ż" a potem reszte stringa przesunac nad
    "L" memmove. !!
  • takie zwracanie text2 tylko po zmienieniu jednego elementu to nie ma sensu !!

Jesli dalej nie wiesz jak to poprawic to napisz DOKLADNIE co chcesz zrobic !!!

PS. Poczytaj dokladnie o wskaznikach i arytmetyce na wskaznikach !!!!

//Uwaga: używaj tagów <cpp> i <delphi> oraz <b> zamiast [b] - m.M

0

snaj napisales:

  • jesli pass2 zdefiniujesz jako char** i odpowiednio zaalokujesz pamiec to nie ma porblemu,
  • tylko ze wtedy pass2[j] = odszyfr_haslo2(caly_plik[i]); wywal ta "" i juz bedzie OK,

hmm... wkleje ci kawalek zrodla bo ja nie uzywam char** nawet nie wiem ja kto sie deklaruje , i uzywa ;]


#include <stdioh.>
#include <conio.h>
char odszyfr_haslo2(char *text2);
int main(void)
{
FILE *fin;
char filename[11]= "Config.dat";
char haslo2[10] = "Password2";
char pass2[45];
char *wskaz;
char *koniec;
char caly_plik[1999];
char numer[7] = "Number";
char number[15];
int i=0;
int j=0;

fin = fopen(filename, "r")
  while ((text=fgetc(fin)) != EOF ){
        caly_plik[i] = text;
        ++i;
  }

  wskaz = strstr(caly_plik,numer);
  wskaz += 8;
  koniec = wskaz + 3;
  for (i=*wskaz,j=0;i<=*koniec;i++,j++)
  {
  sprintf(number[j],"%c",caly_plik[i]);
  }  

 wskaz = strstr(caly_plik,haslo2);
 wskaz += 11;
 koniec = wskaz + 30;
 for (i=*wskaz,j=0;i<=*koniec;i++,j++)
  {
    pass2[j] = odszyfr_haslo2(caly_plik[i]);
  }

printf("%s, %d",pass2,number);
getch();
return 0;
}

char odszyfr_haslo2(char *text2); {
if (text2 == "PL" ) { text2 = "ż"; }
return(*text2);
}

ort! The End ort!

0

Ok kod zamiesciles ale podaj mi dokladna specyfikacje tego progsa :

  • co masz na wejsciu,
  • co masz miec na wyjsciu,
  • co ma dokladnie robic kazda fukcja - co na jej wejsciu co na wyjsciu,
  • co zawieraja pliki,
  • jakis przykladzik na prowizorycznych danych,
    Bo z blednego kodu niewiele mozna wywnioskowac - byc moze dobrze kombinowales
    ale jakis znaczniejszy blad implementacji i juz nie dojde co i jak !!

PS. Moze jednak nie pisz tego typu postow na forum ?! Zapuszczaj tylko naprawde wazne
pytania - o tego typu sprawy pytaj np przez maila (znasz moj)!! - juz jechalem kilka osob
za takie maratony na binboy-u wiec trza byc konsekwentnym [diabel] Po prostu ten temat nie
nadaje sie na forum bo pozniej osoby to czytajace nic z tego sensownego nie wyniosa
(jakis koles pomaga innemu w jakims programie ) - bez obrazy :)
PS2. Jesli tego typu tematu nie przeszkadzaja tutejszym moderatorom :) (mile widziana
odpowiedz na to pytanie) to pisz dalej tutaj.

1 użytkowników online, w tym zalogowanych: 0, gości: 1