powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Я нуб =( проблемы с сокетами.
30 сообщений из 30, показаны все 2 страниц
Я нуб =( проблемы с сокетами.
    #33298305
1024byte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сразу предупреждаю, с сокетами связался впервые. Похоже чего-то недопонимаю.
Написал две программы клиент и сервер, не хотят связываться.
Клиент :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <sys/types.h>
#include <errno.h>

#define PORT  1111 

int main(int argc, char *argv[])
{
int sock;
struct sockaddr_in addr; 
char ret[ 4096 ];
int test;

addr.sin_family = AF_INET; 
addr.sin_addr.s_addr = inet_addr("127.0.0.1"); 
addr.sin_port = htons(PORT);
sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
    if(connect(sock, (struct sockaddr*)&addr, sizeof(addr))== 0 )
      {
	     printf("Receiving data ...\n");	    
	     recv(sock, ret, sizeof(ret),  0 );
	     printf("%s", ret);
      }else{
             printf("connection error code : %d\n",errno);
      }    
}

Сервер
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <memory.h>
#include <stdio.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <unistd.h>

#define SRV_PORT  1111 
#define BUF_SIZE  64 
#define TXT_QUEST "Who are you?\n"

main () {
  int s, s_new;
  int from_len;
  char buf[BUF_SIZE];
  struct sockaddr_in sin;
  struct sockaddr_in from_sin;
  
  s = socket (AF_INET, SOCK_STREAM,  0 );
  memset ((char *)&sin, '\0', sizeof(sin));
  sin.sin_family = AF_INET;
  sin.sin_addr.s_addr = INADDR_ANY;
  sin.sin_port = SRV_PORT;
  if(bind (s, (struct sockaddr *)&sin, sizeof(sin))!=- 1 ){
    printf("Binding OK\n");  
    if(listen (s,  5 )!=- 1 )    printf("listening . . . ok\n"); 
    else printf("listening failed, code %d\n",errno);
    from_len = sizeof(from_sin);
    s_new = accept (s, (struct sockaddr *)&from_sin, &from_len);
     if(s_new==- 1 ) printf("Accept error\n");
     else{ 
      printf("accept OK\n");
      write (s_new, TXT_QUEST, sizeof(TXT_QUEST));
      shutdown (s_new,  0 );
      close (s_new);
     } 
  }else{
    printf("Binding error\n");
  }
}

В общем сервер запускается и ждет, а клиент возвращает connection refused и всё =(
При этом я переписав клиента коннектился к апачу и качал оттуда странички.
Проблемма скорее всего в сервере.
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33298450
freebeer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Слушаете на INADDR_ANY, а коннектится пытаетесь на #define PORT 1111. Определитесь как-нибудь :)
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33298523
freebeer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сорри, слажал... конец раб. дня
А разве не

Код: plaintext
1.
2.
3.
sin_family = AF_INET;
htonl(INADDR_ANY);
htons(PORT);

и для сервера и для клиента
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33298578
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1024byteСразу предупреждаю, с сокетами связался впервые. Похоже чего-то недопонимаю.
В общем сервер запускается и ждет, а клиент возвращает connection refused и всё =(
При этом я переписав клиента коннектился к апачу и качал оттуда странички.
Проблемма скорее всего в сервере.
Я, конечно, не большой знаток в сокетах (написал пару программок на MFC-реализации сокетов). Но могу сказать, что:
1. У сервера должен быть "слушающий" сокет. Он всегда один.
2. При получении запроса слушающим сокетом, сервер должен создать "рабочий" сокет, который и будет общаться с клиентом. Слушающий сокет при этом освобождается и продолжает слушать дальше. "Рабочих" сокетов может быть сколько угодно...
В "терминах" MFC это выглядело так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
IMPLEMENT_DYNCREATE(CListSocket,CAsyncSocket)
....
void CListSocket::OnAccept(int err)
{
	CRequestSocket *pRequest=new CRequestSocket();
	if (Accept(*pRequest))
            pRequest->AsyncSelect(FD_READ|FD_CLOSE);
}
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33298581
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз слажал
Как ты соединишься с сервером не указав его адрес ???
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33298726
AndreiNz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Вас сервер ждет первого соединения, затем делает лог (printf), пытается писать в новый сокет и завершает работу. По меньшей мере и клиент и сервер должны быть на одной машине, так как, если я не ошибаюсь, то 127.0.0.1 это localhost. Больше чем одну попытку клиентского соединения Ваш сервер не будет обрабатывать. А так надо смотреть что пишут ваши printfы на сервере.
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33298750
freebeer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gluk (Kazan)Еще раз слажал
Как ты соединишься с сервером не указав его адрес ???

Я в смысле, что функция htons должна вызыватся и для сервера и для клиента


клиент см ниже
addr.sin_port = htons(PORT);

сервер

sin.sin_port = SRV_PORT;

Imho, разные это порты
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33298771
1024byte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
именно на одной машине и проверяю =)

printf на сервере выдают :
Код: plaintext
1.
2.
Binding OK
Listening . . . ok
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33298803
AndreiNz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По хорошему Вам надо создавать отдельную Thread, Нитку или как ее/его еще называют "поток" для слушащего сокета и для каждого вновь соединенного сокета создавать новый Thread тоже. В этом случае слушащий сокет не будет блокировать UI, если он у Вас есть, а каждое соединение будет обрабатываться параллельно. Наверное проще для начала взять уже готовый код, где-нибудь с интернета или из учебника и с ним уже разбираться.
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33298805
1024byte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
freebeer
спасибо дело именно в этом
htons(SRV_PORT);

всё пашет ок, пасиб.
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33298870
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
freebeerImho, разные это порты

Точно, не заметил :)
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33299030
1024byte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndreiNz
По хорошему Вам надо создавать отдельную Thread, Нитку или как ее/его еще называют "поток" для слушащего сокета и для каждого вновь соединенного сокета создавать новый Thread тоже. В этом случае слушащий сокет не будет блокировать UI, если он у Вас есть, а каждое соединение будет обрабатываться параллельно. Наверное проще для начала взять уже готовый код, где-нибудь с интернета или из учебника и с ним уже разбираться.


Да это жлементарно, переделка заняла ровно 20 сек.
добавил 1 fork() и всё =)
главный затык был на глупой ошибке.
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33299048
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С этим верчением байтов сплошные геморои где нибудь да забудешь
Ползаешь потом как дурак под отладчиком
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33299100
мда
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кароче склифасофские, выпийте йаду!

http://msdn.microsoft.com/library/en-us/winsock/winsock/complete_client_code.asp
http://msdn.microsoft.com/library/en-us/winsock/winsock/complete_server_code.asp

Развели тут панимаешь, дискусию ))))))))))
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33299111
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да да, Остальное от Лукавого !!!
И за это побьют камнями

Чужим умом предлагаете жить ???
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33299437
мда
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
наверна наши вдумчивыя таварисчи ужо давно напесали свой кампилятор Си-- :) К сажалению я пака что вынуждин пользоваца мелкософтофским :(
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33299459
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сам компилятор, конечно, не писал, но и майкрософтовским не пользуюсь :-)
у меня есть GCC :-)
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33299750
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мданаверна наши вдумчивыя таварисчи ужо давно напесали свой кампилятор Си-- :) К сажалению я пака что вынуждин пользоваца мелкософтофским :(

Вдумчивые товарищи уже МНОГО чего за эту жизнь понаписали, например C-подобный интерпретатор скриптов для вполне реального проекта. А не далее как неделю назад сдали RADIUS обственного изготовления. Но к предмету обсуждения это не относится :)
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33300627
мда
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gluk (Kazan)Вдумчивые товарищи уже МНОГО чего за эту жизнь понаписали, например C-подобный интерпретатор скриптов для вполне реального проекта. А не далее как неделю назад сдали RADIUS обственного изготовления. Но к предмету обсуждения это не относится :)
И все эта канечна писалась не на С++, С--, С, С#, GCC т.п. Я пральна понял мысль?
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33300841
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему канешна ?
И каким образом C# оказался в одном перечислении с C++ ???
Вы бы ищо Lisp в ентот список засунули

Если Вас это так сильно заинтересовало, интерпретатор скриптов писался под Delphi. RADIUS на MSVC 2003. Кроме того, писались коммерческие проекты на C под HP-UX, Turbo C под DOS и т.п. В качестве БД довелось использовать Oracle 6-10, MS SQL 7-2000, Postgress 7.4.2 и немножко MySQL.
Ассемблеры которыми я владею перечислять ???
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33301180
1024byte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мдаКароче склифасофские, выпийте йаду!
http://msdn.microsoft.com/library/en-us/winsock/winsock/complete_client_code.asp
http://msdn.microsoft.com/library/en-us/winsock/winsock/complete_server_code.asp
Развели тут панимаешь, дискусию )))))))))
Дорогой, Склифасофский, учи албанский. Найти готовое в мнете способна и обезьяна. Я балдею от мелкомягких компиляторов. Я пожалу предпочту компилятор, позволяющий мне писать код и под win и под *nix без крупных мзминений.

мдаИ все эта канечна писалась не на С++, С--, С, С#, GCC т.п.
чёт тут как я смотрю накопано и языков и компиляторов и интерпретаторов, что именно хотели сказать то.

Я смотрю топик из ответов перерос в конкурс "кто круче"
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33301254
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 1024byte

Извини, что нагадил в твоей ветке. Некоторые типы выводят меня из себя
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33302291
мда
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gluk (Kazan)В качестве БД довелось использовать Oracle 6-10, MS SQL 7-2000, Postgress 7.4.2 и немножко MySQL.
Упал пацтул )))))))))
Ассемблеры которыми я владею перечислять ???Обизатильна )) С этага и нада была начинать а не пароть чушь пра БД (Кста а чо эта ты клипер забыл - упушщениё!!! )))
ЗЫ. Кто та тут выеживаеца, но не я ("диалект" не считаитца).
ЗЗЫ. Лична я пишу как люди саветуют написавшие wsock32.dll/ws2_32.dll и кампилятар ВС++ в придачу. Павтаряю исчо раз: напешите свой кампилятар, сваи либы и нах вам тада МСДН упал есле вы такие умные на.
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33302310
мда
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1024byteНайти готовое в мнете способна и обезьяна.
Судя па таму коду каторый ты вылажил ты в МСДНе не сотрел
Я балдею от мелкомягких компиляторов. Я пожалу предпочту компилятор, позволяющий мне писать код и под win и под *nix без крупных мзминений.Исчо адин ламо. Ты сначало иго изучи а патом балдеть буш. Знаишь чем ламо от чайника отличаитца? Тем чта нихера не знает (как и чайник) но зато аба всем у ниго уже свае мнение слажилась (типа как у тибя - см. выше).
мдаИ все эта канечна писалась не на С++, С--, С, С#, GCC т.п.
чёт тут как я смотрю накопано и языков и компиляторов и интерпретаторов, что именно хотели сказать то.
Я смотрю топик из ответов перерос в конкурс "кто круче"[/quot]
Да кто спорит та, и так панятна - ты всех круче. Кароче выпей йаду.
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33302444
alex_k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
когда нибудь и сдесь будет действующий модератор.
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33302534
Фотография Землекоп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_kкогда нибудь и сдесь будет действующий модератор.

Проку не будет. Модератор - чаще заложник своих обид и комплексов, а не объективный судья.
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33302682
Фотография JibSkeart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Землекоп alex_kкогда нибудь и сдесь будет действующий модератор.

Проку не будет. Модератор - чаще заложник своих обид и комплексов, а не объективный судья.

Хы-хы , тоже верно , но не факт.
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33302794
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мдаЗЗЫ. Лична я пишу как люди саветуют написавшие wsock32.dll/ws2_32.dll и кампилятар ВС++ в придачу. Павтаряю исчо раз: напешите свой кампилятар, сваи либы и нах вам тада МСДН упал есле вы такие умные на.

Давай, разберемся:

1. Чел написал совершенно корректный код который не работает
2. Некоторое время никто ничего не писал, поскольку код выглядит как совершенно корректный а ошибку с верем байтов заметить реально тяжело, особенно если она усугублена десятичным портом 1111 который вводит в заблуждение, так как несмотря на то, что 0x457 совсем не то-же самое 0x5704 но в десятичном виде выглядит похожим :)
3. Самый зоркий, все-таки замечает несостыковку и обращает на это внимание общественности (с первого раза не слишком удачно)
4. На этот момент проблема в общем-то решена (чел отрапортовал, что все работает) начинаются сетования с моей стороны о тяготах программисткой службы
5. В этом месте появляешься ТЫ - сааааамый умный и с опущенным забралом.
И посылаешь всех в MSDN, совершенно не по делу

Ну и кто ты после этого как не ТОРМОЗ ???
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33302797
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
верем читать как верчением
...
Рейтинг: 0 / 0
Я нуб =( проблемы с сокетами.
    #33308467
1024byte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исчо адин ламо. Ты сначало иго изучи а патом балдеть буш. Знаишь чем ламо от чайника отличаитца? Тем чта нихера не знает (как и чайник) но зато аба всем у ниго уже свае мнение слажилась (типа как у тибя - см. выше).

И чем данная формулировка отличается от того, что мы видим в твоем лице ?
Нет бога кроме VC и MSDN'а - пророка его.
Не надо размахивать флагом джихада и орать что все вокруг ламо.
У меня есть опыт работы в других отраслях, я просто решил разобраться с тем, что мне еще не приходилось писать. Думаю, найдется немало тем, в которых ты окажешься гораздо менее компетентен чем я. В конце концов, если считаешь что тут все ламо - зачем читаешь форум ??? тем более что конкретного ответа по существу ты так и не дал. Я бы тебе посоветовал не драть куски мсдновских семплов а пописать самому, я думаю не раз наткнешься на свои глупые ошибки пока до конца не поймешь то, в чем хотел разобраться.

Я же в самом начале предупредил, то не разбираюсь в сокетах. То, что получилось, я дописал до нужного мне состояния, завел на линуховом серваке и всё в порядке. С любимым тобой мелкомягким компилятором это было-бы гораздо неудобнее.

ПыСы : спасибо всем ответившим.
...
Рейтинг: 0 / 0
30 сообщений из 30, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Я нуб =( проблемы с сокетами.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]