Winsock - server/klient funkční pouze na 127.0.0.1 – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Winsock - server/klient funkční pouze na 127.0.0.1 – C / C++ – Fórum – Programujte.comWinsock - server/klient funkční pouze na 127.0.0.1 – C / C++ – Fórum – Programujte.com

 

Hanzis0
Newbie
31. 1. 2011   #1
-
0
-

Zdravím mám takový problém vytvořil jsem server a klient (samostatné aplikace). a připojení i se zapisováním a čtením socketu je v pořádku, ovšem pouze pokud se server spustím na svém PC a z toho samého PC se také připojím, jakmile se chci připojit z jiné IP klient mi hlásí connection timeout. Přitom na serveru mám nastaveno sockAddr.sin_addr.s_addr = INADDR_ANY. Port používám 5432. Může to být tím, že již je port využíváný? nebo v čem jiném může být chyba?

Nahlásit jako SPAM
IP: 88.100.203.–
crAzY^
~ Moderátor
+10
Grafoman
31. 1. 2011   #2
-
0
-

to znamená že nemáš odpověď od serveru... zkoušel si pingnout hostname?

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
KIIV
~ Moderátor
+43
God of flame
31. 1. 2011   #3
-
0
-

To crAzY^ : on to taky muze blokovat firewall ..

Nahlásit jako SPAM
IP: 94.142.234.–
Program vždy dělá to co naprogramujete, ne to co chcete...
crAzY^
~ Moderátor
+10
Grafoman
31. 1. 2011   #4
-
0
-

To KIIV : jj... právě proto mu píšu, aby to zkusil pingnout...

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
Hanzis0
Newbie
31. 1. 2011   #5
-
0
-

Firewall mám právěže vypnutej, a když zkusím ping tak nepřijmu nic.

Nahlásit jako SPAM
IP: 88.100.203.–
crAzY^
~ Moderátor
+10
Grafoman
31. 1. 2011   #6
-
0
-

a seš si jistý, že ten hostname máš správný? (také rozlišuj veřejnou a privátní ip)

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
Hanzis0
Newbie
31. 1. 2011   #7
-
0
-

Ano hostname mám správný. Používám jen privátní IP, veřejnou ani nemám.

Nahlásit jako SPAM
IP: 88.100.203.–
crAzY^
~ Moderátor
+10
Grafoman
31. 1. 2011   #8
-
0
-

tak nám sem hoď kousek kódu, protože takhle fakt můžeme jenom odhadovat....

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
Hanzis0
Newbie
31. 1. 2011   #9
-
0
-

Kod serveru - naslouchání

	

Form1->AdvMemo1->Lines->Add("Waiting for connection...");
Form1->listen_sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

if(Form1->listen_sock == INVALID_SOCKET){
ShowMessage("Nepodařilo se připravit listen_sock " + IntToStr(WSAGetLastError()));
WSACleanup();
}
//---------------------------------------
Form1->servAddr.sin_family = AF_INET; //
Form1->servAddr.sin_addr.s_addr = INADDR_ANY; //
Form1->servAddr.sin_port = htons(5432); //
//---------------------------------------

if(bind(Form1->listen_sock,(sockaddr*)&Form1->servAddr,sizeof(Form1->servAddr)) == SOCKET_ERROR){
ShowMessage("Chyba při bind() " + IntToStr(WSAGetLastError()));
WSACleanup();
}
if(listen(Form1->listen_sock,2) == INVALID_SOCKET){
ShowMessage("Chyba při Listen() " + IntToStr(WSAGetLastError()));
WSACleanup();
}

int cliAddr_len = sizeof(Form1->cliAddr);
Form1->serv_sock = SOCKET_ERROR;

Form1->serv_sock = accept(Form1->listen_sock, (sockaddr*)&Form1->cliAddr,&cliAddr_len);
if(Form1->serv_sock == SOCKET_ERROR){
ShowMessage("Chyba v Accept() " + IntToStr(WSAGetLastError()));
WSACleanup();
}
Form1->AdvMemo1->Lines->Add("Client connected - ");
Form1->AdvMemo1->Lines->Add(inet_ntoa(Form1->cliAddr.sin_addr));
char connected_buffer[256];
recv(Form1->serv_sock,connected_buffer,256,0);
Form1->AdvMemo1->Lines->Add(connected_buffer);

Kod klienta - připojení na server



String text = "!!!Zdravím server!!!";
//-------------NAPLNĚNÍ STRUKTURY SOCKADDR_IN----------------------------
cliAddr_in.sin_family = AF_INET;
cliAddr_in.sin_addr.s_addr = inet_addr(Edit1->Text.c_str());
cliAddr_in.sin_port = htons(5432);

if (connect(sock,(struct sockaddr *)&cliAddr_in,sizeof(cliAddr_in)) < 0){
ShowMessage(IntToStr(WSAGetLastError()));
}else {
send(sock, text.c_str(), 21, 0);
}

Nahlásit jako SPAM
IP: 88.100.203.–
crAzY^
~ Moderátor
+10
Grafoman
31. 1. 2011   #10
-
0
-

koukám na to tak zběžně a napadá mě jen, aby si zkontroloval jestli ti inet_addr() nevrací INADDR_NONE.

Nahlásit jako SPAM
IP: 89.190.90.–
All you need is vision and time.
Hanzis0
Newbie
31. 1. 2011   #11
-
0
-

INADDR_NONE mi to nevrací. Nevím proč, ale z ničeho nic se mi spojení povedlo, aniž bych pozměnil jakkoliv kód.

Nahlásit jako SPAM
IP: 88.100.203.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 15 hostů

Podobná vlákna

Server pro chat winsock vs boost asio — založil rodinne.baleni.ryze

Server a Klient — založil infomf

Klient-Server aplik. — založil Wladimir

Server - Klient logika — založil Kubas129

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý