Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.09.2012, 14:37   #1
Tiva
Пользователь
 
Регистрация: 23.11.2011
Сообщений: 49
По умолчанию winsock как настроить для интернета?

всем привет. у меня есть клиент и сервер. между ними устанавливается соединение с помощью сокетов. когда сервер и клиенты запущены на одном компьютере, то клиенты успешно подключаются к серверу.

теперь, мне надо так настроить сокеты, чтоб это все работало через интернет. т.е. сервер на одном компе, клиенты на разных. вот мои настройки(сделано ручками, а не готовыми компонентами, мб поэтому и трудности), помогите пожалуйста разобраться.

сервер
Код:
int main(void)
{
	WORD myVRequiried=MAKEWORD(2,2);
	WSADATA myWData;
	DWORD err;
	err=WSAStartup(myVRequiried,&myWData);
	if(err)
	{
		if (err==WSASYSNOTREADY) cout<<"Network subsystem is not ready for network communication"<<endl;
		if(err==WSAVERNOTSUPPORTED) cout<<"Requested version of Windows Socket library is not supportet"<<endl;
		else cout<<"Error №"<<err<<endl;
		return 1;
	}
	ClientServiceThread* cst = new ClientServiceThread;
		cst->listener = socket (AF_INET, SOCK_STREAM, 0);
	if (cst->listener == INVALID_SOCKET)
	{
		cout<<"Error. INVALID_SOCKET"<<endl;
		return 1;
	}

	struct sockaddr_in address_server;
	address_server.sin_family = AF_INET;
	address_server.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
	address_server.sin_port = htons(1024);
		int bindErr = bind(cst->listener, (struct sockaddr *)&address_server, sizeof(address_server));
			if (bindErr ==SOCKET_ERROR)
	{
		cout<<"Error № "<<WSAGetLastError();
		return 1;
	}

	cst->clientMaxCount = 2;
	cst->clientCount = 0;
	cst->socket_client = new SOCKET[cst->clientMaxCount];
	for (int i = 0; i < cst->clientMaxCount; i++)
		cst->socket_client[i] = INVALID_SOCKET;
	cst->address_client = new struct sockaddr_in[cst->clientMaxCount];
	listen( cst->listener, cst->clientMaxCount);

	DWORD cstThreadId;
	HANDLE cstThread = CreateThread(0, 0, &ClientService, cst, 0, &cstThreadId);
.......
}
клиент
Код:
int main(int argc, char* argv[])
{
	WSADATA version;
	DWORD startErr = WSAStartup(0x0202, &version);
	if (startErr)
	{
		cerr << "Windows socket library isn't version 2.2";
		return 1;
	}

	SOCKET client;

	client = socket(AF_INET, SOCK_STREAM, 0);

	struct sockaddr_in address_server;
	address_server.sin_family = AF_INET;
	address_server.sin_addr.S_un.S_addr = htonl(INADDR_LOOPBACK);
	address_server.sin_port = htons(1024);


	int connectErr;
	connectErr = connect(client, (struct sockaddr *) &address_server, sizeof(sockaddr));

	if (connectErr == SOCKET_ERROR)
	{
		cout<<"Socket error"<<endl;
		return 2;
	}

в общем я читал всякие темы на различных форумах, но так и не разобрался. какие только параметры не менял и ip не указывал. не подключается .
Tiva вне форума Ответить с цитированием
Старый 17.09.2012, 14:47   #2
Tiva
Пользователь
 
Регистрация: 23.11.2011
Сообщений: 49
По умолчанию

если надо, могу выложить полностью сервер и клиент
только помогите пожаалуйста ((
Tiva вне форума Ответить с цитированием
Старый 17.09.2012, 16:28   #3
bedman
Пользователь
 
Регистрация: 24.07.2012
Сообщений: 28
По умолчанию

проверь port forwarding на роутере
bedman вне форума Ответить с цитированием
Старый 17.09.2012, 17:21   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Вот причина:
address_server.sin_addr.S_un.S_addr = htonl(INADDR_LOOPBACK);

Тут надо адрес сервера писать
waleri вне форума Ответить с цитированием
Старый 18.09.2012, 13:29   #5
Tiva
Пользователь
 
Регистрация: 23.11.2011
Сообщений: 49
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Вот причина:
address_server.sin_addr.S_un.S_addr = htonl(INADDR_LOOPBACK);

Тут надо адрес сервера писать
писал ip сервера - все равно не конектит(тобишь ip компа, на котором запускаю)

у меня нету роутера.
Tiva вне форума Ответить с цитированием
Старый 18.09.2012, 16:11   #6
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,331
По умолчанию

Там надо писать IP адрес, причем в правильной форме. Покажите как задаете адрес...
waleri вне форума Ответить с цитированием
Старый 18.09.2012, 19:38   #7
Tiva
Пользователь
 
Регистрация: 23.11.2011
Сообщений: 49
По умолчанию

213.87.123.103 -> 0x677B57D5
шестнадцатиричный вариант ip и пишу туда. писал всяко, с кавычками и без.
Tiva вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ноутбук для работы, интернета, книг. как определиться какой необходим? LIEN Компьютерное железо 2 15.12.2011 08:14
Как настроить автозапуск для программы? ВалекFCRK Общие вопросы Delphi 1 10.10.2011 01:34
Настроить скорость интернета stenl1 Операционные системы общие вопросы 8 13.12.2010 12:35
Как настроить Firebird для работы по Интернету artemavd Работа с сетью в Delphi 3 18.07.2010 17:10
Где взять, как установить и настроить PDFlib для php 5.3.0 ? zvezda_t PHP 1 26.01.2010 11:03