[ wipeout @ 11.10.2005. 15:45 ] @
Imam problem u mreznom programiranju pomocu winsock-a,u jeziku C,koristeci Visual C++ 6.0 ...
Program mi se uredno kompajlira s 0 gresaka i 0 upozorenja... Takoder sam povezao pomocu linkera datoteku Ws2_32.lib....
Program se uspjesno starta,ali vec kod WSAStartup inicijalizacije dode do greske....WSAGetLatError mi vraca 0....I naravno program se prekida...Ne znam uopce u cemu je problem..Sto se tice mreznog programiranja totalni sam pocetnik......

TestWinSock.cpp
---------------------------

Code:

#include <winsock2.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>

#define DEST_IP "127.00.000.01"
#define DEST_PORT 4444

int main()
{
WSADATA wsaData;

if(!WSAStartup(MAKEWORD(1, 1) , &wsaData))
{
printf("WSAStarturp pokretanje prekinuto! Doslo je do greske broj # %d! Izlazim .\n",WSAGetLastError());
exit(1);
}


int sockfd;
struct sockaddr_in dest_addr;

sockfd = socket(AF_INET, SOCK_STREAM, 0);

dest_addr.sin_family = AF_INET;
dest_addr.sin_port = htons(DEST_PORT);
dest_addr.sin_addr.s_addr = inet_addr(DEST_IP);

memset(&(dest_addr.sin_zero), '\0', 8);

if(connect(sockfd, (struct sockaddr *)&dest_addr, sizeof(struct sockaddr)) == -1)
printf("Doslo je do greske,nisam se spojio!\n");
else
printf("Uspjesno sam se spojio! Valjda :)a \n");


getch();

closesocket(sockfd);
WSACleanup();

getch();

return 0;
}
[ Dragi Tata @ 11.10.2005. 17:13 ] @
http://msdn.microsoft.com/libr...nsock/winsock/wsastartup_2.asp

"The WSAStartup function returns zero if successful."
[ wipeout @ 11.10.2005. 19:41 ] @
otkrio sam problem....i to veoma banalan problem...i pocetnik ne bi napravio ovakvu gresku...

if(!WSAStartup(MAKEWORD(1, 1) , &wsaData))

WSAStartup() vraca 0 ako je sve proslo u redu...ali moj "famozni" kod provjerava
da li je WSAStartup(MAKEWORD(1, 1) , &wsaData) == 0.ako da prekini program ...kako amaterski :)

Uvijek sam mijesao if(!izraz) i if(izraz)

Hvala "Dragi Tata"...


[Ovu poruku je menjao wipeout dana 11.10.2005. u 20:42 GMT+1]
[ wipeout @ 11.10.2005. 20:05 ] @
opet nailazim na problem koji ne znam samostalno rjesit..mozda i znam,ali vjerujem da je ovo puno brzi nacin...naime sada imam problema sa connect() funkcijom.....jednostavno nece mi da se spoji na zadanu adresu(u oom slucaju na lokalno racunalo)..dolje se nalazi kod,pa ako itko ima kakav prijedlog ,zahvaljujem unaprijed :)

TestWinSock.cpp
----------------------------

Code:
 
#include <winsock2.h>
#include <stdio.h>
#include <conio.h>


#define DEST_IP "127.0.0.1"
#define DEST_PORT  27015

int main()
{
    WSADATA wsaData;

     
    if(WSAStartup(MAKEWORD(2, 2) , &wsaData))
    {
        printf("WSAStarturp pokretanje prekinuto! Izlazim .\n");
        exit(1);
    }

    
    int sockfd;
    
    sockfd = socket(AF_INET, SOCK_STREAM, 0);

    if(sockfd == INVALID_SOCKET)
    {
        printf("Socket() pokretanje prekinuto! Doslo je do greske broj # %d! Izlazim .\n",WSAGetLastError());
        exit(1);
    }

    struct sockaddr_in dest_addr;

    dest_addr.sin_family = AF_INET;
    dest_addr.sin_port = htons(DEST_PORT);
    dest_addr.sin_addr.s_addr = inet_addr(DEST_IP);

    memset(&(dest_addr.sin_zero), '\0', 8);

    if(connect(sockfd, (SOCKADDR *)&dest_addr, sizeof(dest_addr)) == SOCKET_ERROR)
        printf("Doslo je do greske,nisam se spojio!\n");
    else
        printf("Uspjesno sam se spojio! Valjda :)a \n");
    


    closesocket(sockfd);
    WSACleanup();

    getch();

 return 0;
}
[ srdjandakic @ 11.10.2005. 21:30 ] @
Hm... postoji li kod tebe program koji sluĊĦa konekcije na 127.0.0.1:27015 ?
[ Buffy @ 11.10.2005. 21:32 ] @
Zasto ne koristis standardni izlaz za greske.
Code:

#include <errno.h>
...
if (connect(...)==-1) perror("connect()");

Koristi perror pa javi koja je greska odstampana.
Jesi li siguran da si postavio server :)
[ wipeout @ 12.10.2005. 16:23 ] @
Rjesio sam "problem"...Greska je bila u tome sto mi je IP adresa servera bila 127.0.0.01
dok se gornji kod pokusavao spojiti na 127.0.0.1...opet jedna velka glupost...s moje strane :)
Ali cudno je da perror() vraca na connect()-u No Error! ...sada ili perror() ne hvaca greske iz winsock funkcija ili nesto sasvim drugo....
Hvala svima...
Cut cemo se opet,cim naidem na sljedecu "nepremostivu" gresku....
[ nikoladsp @ 12.10.2005. 16:59 ] @
otidi prijatelju na sledeci link:

[url]http://www.adp-gmbh.ch/win/misc/sockets.html#download [/url]

covek je "umoto" socket-e u klase,krajnje se jednostavno koriste a imas i par primera.zasto da se mucis kad ne moras?(osim ako ne zelis)

pozdrav iz novog sada

nikola
[ wipeout @ 13.10.2005. 16:04 ] @
hvala na linku...ali isto bi se ja malo mucio...
sada kada sam pokrenuo program on radi ,ali samo na lokalnom racunalu (127.0.0.1)...cim prebacim na drugi komp javlja mi connect() greska...to jest klijent se ne moze spojiti na server

Dao sam prijatelju da starta server..naravno prije toga sam podesio njegovu IP adresu..( u klijentu i serveru)...i server se startao bez problema...cekao je na konekciju(ali nije docekao :)

Naime kada se pokusavam spojiti klijentom on mi vrati connect() gresku...
Sada ne znam teoriju spajanja...da li klijent kada se spaja na server prvo odlazi do internet providera pa tek zatim na prijateljevo racunalo ili klijent ide direkt na server...Jer ako je prvo,mozda inter. provider ne dopusta spajanja na drugo racunalo ....
Ima li tko kakav prijedlog ili rijesenje???

Hvala svima unaprijed!
[ nikoladsp @ 13.10.2005. 17:26 ] @
hint 1:ako ides preko provajdera,svaki put kada se konektujes imas drugu ip adresu( tvoj frend takodje)
hint 2:firewall postoji negde izmedju vas pa ne mozes da se nakacis na port.(probaj sa portom 7-to je echo port ili neki "poveci port",npr 30000 )
hint 3:ako mozes, najbolje ti donesi frendov komp kod sebe pa ih umrezi:jedan 192.168.0.1, drugi 192.168.0.2 i vozi.cak ces moci i da debagujes sa obe strane.

i jos jedan prijateljski savet:
imas i dobar tutorijal na malom broju strana,vrlo je sazet ali ima sve sto ti je potrebno:
http://beej.us/guide/bgnet/
mozes naci i link na hrvatski prevod(ali pazi,ja sam na tom linku sto drzi na hrvatskom prevod pokupio virus jednom prilikom)