Witam napisalem prosty server, ktory czeka na polaczenie na konkretnym porcie a w chwili gdy je otrzyma rozlacza sie i zwraca connected. Moj problem polega na tym ze o ile przy poloczeniu sie przez telnet na localhost wszystko dziala ok, o tyle polaczenie z zewnatrz jest nie mozliwe. Probowalem przekierowac porty w liveboxie, ale to nic nie dalo. Wie ktos w czym tkwi problem?
Piszac wspomoagalem sie ta stronka http://cc-team.org/index.php?name=artykuly&show=154
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
int main(void) {
int s, result, cs = 0;
struct sockaddr_in laddr;
socklen_t laddr_len;
/*tworzymy gniazdko*/
s = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (s < 0) {
perror("socket");
return 1;
}
memset(&laddr, 0, sizeof(struct sockaddr));
laddr.sin_family = AF_INET;
/*server bedzie nasluchiwac na 2000 porcie*/
laddr.sin_port = htons(8050);
/*kazdy komputer moze sie polaczyc*/
laddr.sin_addr.s_addr = htonl(INADDR_ANY);
/*\"bindujemy\" port z gniazdkiem*/
result = bind(s, (struct sockaddr*)&laddr, sizeof(struct sockaddr));
if (result < 0) {
close(s);
perror("bind");
return 1;
}
/*ustawiamy gniazdko (zbindowane) w tryb nasluchiwania*/
result = listen(s, 5);
if (result < 0) {
close(s);
perror("listen");
return 1;
}
laddr_len = sizeof(struct sockaddr);
/*czekamy dopoki cs == 0, czyli dopoki ktos sie z nami nie polaczy*/
while ((cs = accept(s, (struct sockaddr*)&laddr, &laddr_len)) == 0);
printf("Connection accepted.\n");
/*teraz mozna juz zaczac wymieniac dane z klientem
uzywajac zmiennej \"cs\"*/
/*zamykamy gniazdko i polaczenie, ktore zostalo nawiazane z serverem*/
close(cs);
close(s);
return 0;
}