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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2009, 01:06   #1
kolchakA
Пользователь
 
Регистрация: 15.11.2009
Сообщений: 14
По умолчанию Простейшие клиент-сервер на сокетах: почему ошибка 10060

Попытался реализовать простейшие клиент и сервер на сокетах. Оба - клиент и сервер работают на моем компьютере. Сервер открывает соединение для любого ip адреса и ждет подключения, клиенту для подключения при отладке задаю внешний ip адрес своего компа (внешний ip получаю любым онлайн сервисом по определению ip - или просто набираю в яндексе "мой ip"). Но при подключении функция connect около полуминуты ждет, а потом возвращает ошибку: 10060(ошибка соединения с сервером).

На компе установлен Каспер и Outpost (пробовал даже их отключать, все-равно не работает).

Ниже привожу код клиента и сервера.

Клиент:


Цитата:
WSADATA lpWSAData;
SOCKET my_sock;

int port_num=3333;
int errorsock;
char*buff=new char(512);
if (WSAStartup(MAKEWORD(1,1),&lpWSADat a)!=0)
{
MessageBox(0,"WSAStartup ERROR","ERROR",0);
return(NULL);
}

my_sock=socket(AF_INET, SOCK_STREAM, 0);
if (my_sock==INVALID_SOCKET) {
MessageBox(0,"Socket creation ERROR","ERROR",0);
WSACleanup();
return(NULL);
}

sockaddr_in dest_addr;
dest_addr.sin_family = AF_INET;
dest_addr.sin_port = htons(port_num);
dest_addr.sin_addr.s_addr = inet_addr("94.178.65.158"); //мой ip

if (connect(my_sock, (sockaddr *)&dest_addr, sizeof(dest_addr)))
{
errorsock=WSAGetLastError();
MessageBox(0,"ERROR connecting","ERROR",0);
closesocket(my_sock);
WSACleanup();
return(NULL);
}


send(my_sock,"Hello",128,0);

closesocket(my_sock);
WSACleanup();
Сервер:
Цитата:
WSADATA wsaData;
WSAStartup(MAKEWORD(2,2), &wsaData);
SOCKET listet_Sock = socket(AF_INET,SOCK_STREAM,0);

SOCKADDR_IN addr_Sock;

addr_Sock.sin_family = AF_INET;

addr_Sock.sin_addr.s_addr = htonl(INADDR_ANY);

addr_Sock.sin_port = htons(3333);

if(bind(listet_Sock,(LPSOCKADDR)&ad dr_Sock, sizeof(struct sockaddr))) return 0;

if(listen(listet_Sock, 1)) return 0;


char type[2], buf[126];

SOCKET sock = accept(listet_Sock,0,0);

//Здесь начинается ожидание
Подскажите, в чем проблема?
Онлайн ТВ на my-tvset! ОРТ, НТВ и т.д.
Предлагаю помощь в продаже ваших скриптов, движков и сайтов
Недорогие СЕО консультации для начинающих
kolchakA вне форума Ответить с цитированием
Старый 28.11.2009, 02:51   #2
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

А почему не попробовать ip - 127.0.0.1 ?
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 28.11.2009, 10:03   #3
kolchakA
Пользователь
 
Регистрация: 15.11.2009
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Goodwin98 Посмотреть сообщение
А почему не попробовать ip - 127.0.0.1 ?
Забыл написать, что в случае ip - 127.0.0.1 - все работает)

Я вот уже думаю, может у меня на машине запрещен удаленный доступ к определенному диапазону портов? (хотя как тогда серверу удается начать прослушить запрещенный порт...?)
Онлайн ТВ на my-tvset! ОРТ, НТВ и т.д.
Предлагаю помощь в продаже ваших скриптов, движков и сайтов
Недорогие СЕО консультации для начинающих
kolchakA вне форума Ответить с цитированием
Старый 28.11.2009, 10:16   #4
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Закрыт порт на сервере. Ну или антивирус(фаерволл) не пускает
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 28.11.2009, 13:24   #5
oleg kutkov
Unix C++ developer
Форумчанин
 
Аватар для oleg kutkov
 
Регистрация: 16.04.2007
Сообщений: 651
По умолчанию

Ваш внешний IP - это, скорее всего, общий айпи для всех клиентов (ну или части) Вашего провайдера.
Т.к. на самом шлюзе, с этим IP, Ваш сервер не установлен и т.к. не заданы правила маршрутизации на Ваш сервер - программа не может подключится.
Если на 127.0.0.1 все работает - можете считать программу работоспособной..
oleg kutkov вне форума Ответить с цитированием
Старый 28.11.2009, 15:07   #6
kolchakA
Пользователь
 
Регистрация: 15.11.2009
Сообщений: 14
По умолчанию

Цитата:
Сообщение от oleg kutkov Посмотреть сообщение
Ваш внешний IP - это, скорее всего, общий айпи для всех клиентов (ну или части) Вашего провайдера.
Т.к. на самом шлюзе, с этим IP, Ваш сервер не установлен и т.к. не заданы правила маршрутизации на Ваш сервер - программа не может подключится.
Если на 127.0.0.1 все работает - можете считать программу работоспособной..
ага ясно, ну а как поступить чтобы в конкретно моей ситуации наладить сетевое взаимодействие?
Онлайн ТВ на my-tvset! ОРТ, НТВ и т.д.
Предлагаю помощь в продаже ваших скриптов, движков и сайтов
Недорогие СЕО консультации для начинающих
kolchakA вне форума Ответить с цитированием
Старый 28.11.2009, 18:30   #7
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Таки проверить. Действительно ли у вас белый ip, не блокирует ли, напр. модем, входящие соединения.
Да хотя бы просто telnet'ом попробуйте подсоединиться к своему серверу. Если ничего не выйдет, значит уже никак.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 01.12.2009, 08:14   #8
kolchakA
Пользователь
 
Регистрация: 15.11.2009
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Goodwin98 Посмотреть сообщение
Таки проверить. Действительно ли у вас белый ip, не блокирует ли, напр. модем, входящие соединения.
Да хотя бы просто telnet'ом попробуйте подсоединиться к своему серверу. Если ничего не выйдет, значит уже никак.
а подскажите, как проверить ip на "серость"? Я так понимаю серые только в диапазонах (но мой туда не попадает):

* 10.0.0.0 - 10.255.255.255
* 172.16.0.0 - 172.31.255.255
* 192.168.0.0 - 192.168.255.255

Подсоединиться к серверу telnetом пробовал командой open ip port. При этом получал следующие результаты:
если - open ip , то выводится запрос на ввода логина и пароля для входа в управление модемом (у меня Calisto)
если - open ip 80, то выводится сообдение от micro_httpd сервера 400 Bad Request
если - open ip 3333 (это в поей проге открываемый порт), то тупо ждет, а потом пишет - Не удалось открыть подключение к этому узлу на порт 3333: Сбой подключения.

Но если тут дело в модеме, то как же вообще мне написать для такой машины приложение для взаимодействия с глобальной сетью?
Онлайн ТВ на my-tvset! ОРТ, НТВ и т.д.
Предлагаю помощь в продаже ваших скриптов, движков и сайтов
Недорогие СЕО консультации для начинающих
kolchakA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Статья: Низкоуровневое сетевое программирование. Пишем клиент/серверное приложение на сокетах Беркли oleg kutkov C/C++ Сетевое программирование 42 22.01.2011 00:35
БД клиент-сервер [62]Gambit Помощь студентам 5 25.05.2010 10:49
Возможно-ли Клиент-серверное приложение типа Клиент(Pascal) а сервер(CGI)? Demol Работа с сетью в Delphi 1 21.04.2009 16:18
Ошибка сетевого приложения Asynchronous socket error 10060 Glorius Свободное общение 7 22.03.2009 12:19
Клиент-сервер-клиент Кронос Работа с сетью в Delphi 3 24.08.2007 07:57