Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Я нуб =( проблемы с сокетами. / 25 сообщений из 30, страница 1 из 2
30.09.2005, 13:25
    #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
30.09.2005, 14:03
    #33298450
freebeer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я нуб =( проблемы с сокетами.
Слушаете на INADDR_ANY, а коннектится пытаетесь на #define PORT 1111. Определитесь как-нибудь :)
...
Рейтинг: 0 / 0
30.09.2005, 14:19
    #33298523
freebeer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я нуб =( проблемы с сокетами.
Сорри, слажал... конец раб. дня
А разве не

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

и для сервера и для клиента
...
Рейтинг: 0 / 0
30.09.2005, 14:32
    #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
30.09.2005, 14:33
    #33298581
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я нуб =( проблемы с сокетами.
Еще раз слажал
Как ты соединишься с сервером не указав его адрес ???
...
Рейтинг: 0 / 0
30.09.2005, 15:10
    #33298726
AndreiNz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я нуб =( проблемы с сокетами.
У Вас сервер ждет первого соединения, затем делает лог (printf), пытается писать в новый сокет и завершает работу. По меньшей мере и клиент и сервер должны быть на одной машине, так как, если я не ошибаюсь, то 127.0.0.1 это localhost. Больше чем одну попытку клиентского соединения Ваш сервер не будет обрабатывать. А так надо смотреть что пишут ваши printfы на сервере.
...
Рейтинг: 0 / 0
30.09.2005, 15:15
    #33298750
freebeer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я нуб =( проблемы с сокетами.
Gluk (Kazan)Еще раз слажал
Как ты соединишься с сервером не указав его адрес ???

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


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

сервер

sin.sin_port = SRV_PORT;

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

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

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

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


Да это жлементарно, переделка заняла ровно 20 сек.
добавил 1 fork() и всё =)
главный затык был на глупой ошибке.
...
Рейтинг: 0 / 0
30.09.2005, 16:34
    #33299048
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я нуб =( проблемы с сокетами.
С этим верчением байтов сплошные геморои где нибудь да забудешь
Ползаешь потом как дурак под отладчиком
...
Рейтинг: 0 / 0
30.09.2005, 16:51
    #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
30.09.2005, 16:54
    #33299111
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я нуб =( проблемы с сокетами.
Да да, Остальное от Лукавого !!!
И за это побьют камнями

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

Вдумчивые товарищи уже МНОГО чего за эту жизнь понаписали, например C-подобный интерпретатор скриптов для вполне реального проекта. А не далее как неделю назад сдали RADIUS обственного изготовления. Но к предмету обсуждения это не относится :)
...
Рейтинг: 0 / 0
03.10.2005, 10:16
    #33300627
мда
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я нуб =( проблемы с сокетами.
Gluk (Kazan)Вдумчивые товарищи уже МНОГО чего за эту жизнь понаписали, например C-подобный интерпретатор скриптов для вполне реального проекта. А не далее как неделю назад сдали RADIUS обственного изготовления. Но к предмету обсуждения это не относится :)
И все эта канечна писалась не на С++, С--, С, С#, GCC т.п. Я пральна понял мысль?
...
Рейтинг: 0 / 0
03.10.2005, 11:34
    #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
03.10.2005, 13:06
    #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
03.10.2005, 13:27
    #33301254
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Я нуб =( проблемы с сокетами.
2 1024byte

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


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