winsock serwer na livebox

winsock serwer na livebox
LB
  • Rejestracja:około 12 lat
  • Ostatnio:ponad 9 lat
  • Postów:43
0

Napisałem prosty serwer, który tylko ma wiązywać połączenie z klientem ( na chwile obecną jest to telnet -.- ). Serwer działa na ip 127.0.0.1 i na lokalnym ip livebox tzn.: 192.168.0.10. Jednak zależy mi na tym by serwer dostępny był spoza sieci lokalnej. Czytałem dużo o no-ip i dynDSN jednak program nie działa tak jak powienien. Serwer odbiera masę przychodzących połączeń, a nie można się połączyć przez telnet. Jest jakiś sposób na rozwiązanie tego problemu?

Kod serwera:

Kopiuj
#include <sdkddkver.h>
#include <conio.h>
#include <stdio.h>
#include <string>

#include <WinSock2.h>
#include <Windows.h>
#include <iostream>


using namespace std;

void main(){

	char message[200];

	string strmessage = "";
		
	long answer;
	WSADATA wsaData;
	WORD DLLVERSION;
	DLLVERSION = MAKEWORD(2,1);

	answer = WSAStartup(DLLVERSION, &wsaData);

	SOCKADDR_IN addr;

	int addrlen = sizeof(addr);

	SOCKET sListen;
	SOCKET sConnect;

	sConnect = socket(AF_INET, SOCK_STREAM, NULL);

	//addr.sin_addr.s_addr = inet_addr("127.0.0.1");
	addr.sin_addr.s_addr = inet_addr("83.10.53.151");
	addr.sin_family = AF_INET;
	addr.sin_port = htons(1234);

	sListen = socket(AF_INET, SOCK_STREAM, NULL);

	bind(sListen, (SOCKADDR*)&addr, sizeof(addr));

	listen(sListen, SOMAXCONN);

	for(;;){
			cout<<"Waiting for incoming connection"<<endl;

			if(sConnect= accept(sListen, (SOCKADDR*)&addr, &addrlen));
				cout<<"Connection was found"<<endl;
				
	}


}

Pewnie problem tkwi w jakimś małym szczególe :(

UT
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 12 lat
0

przekieruj porty na routerze

Zobacz pozostałe 3 komentarze
LB
Zrobione jednak nadal nie działa, sądzę że problem tkwi w kodzie programu. Port jest ustawiony na 1234 w programie oraz 1234 w NAT/PAT. Myślę że w tym tkwi problem, jednak pÓÓÓÓki co nie mam zielonego pojęcia jak się do tego zabrać :(
LB
czy ma to coś wspólnego z zaporą sieciową?
arasso12
Musisz dodać program(serwer) do wyjątków w zaporze, a na test w ogóle wyłącz wszelkie zapory.
LB
Działa, rozwiązanie to inicjacja: addr.sin_addr.s_addr = htonl(INADDR_ANY); Cały dzień nad tym myślałem :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.