powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Я нуб =( проблемы с сокетами.
25 сообщений из 30, страница 1 из 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
25 сообщений из 30, страница 1 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Я нуб =( проблемы с сокетами.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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