Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
3 / 3 / 1
Регистрация: 13.03.2011
Сообщений: 114

"WinSock" problem with connecting Client to Server

28.05.2012, 17:50. Показов 1276. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.

Есть программа файлового сервера, который слушает все запросы на стандартный порт 80.
Тестирую всё на localhost 127.0.0.1
Сейчас пишу клиент, который должен на 80 порт слать запросы...хотябы...

C
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#define DEFAULT_PORT 80
#define DEFAULT_BUFLEN 1024
 
int run_client()
{
        WSADATA wd = {0};
        WORD version = MAKEWORD(2, 2);
        SOCKET sock1, sock2;
        unsigned short port = DEFAULT_PORT;
        unsigned char buff_in [DEFAULT_BUFLEN] = {0};
        unsigned char buff_out[DEFAULT_BUFLEN] = {0};
        int buff_position = 0; 
        int rc;
        struct sockaddr_in clientService; 
 
        rc = WSAStartup(version, &wd);
        if (rc) {
            printf("WSAStartup failed: %d\n", rc);
            return rc = WSAGetLastError();
        }
 
        //----------------------
        // The sockaddr_in structure specifies the address family,
        // IP address, and port of the server to be connected to.
        clientService.sin_family        = AF_INET;
        clientService.sin_addr.s_addr   = inet_addr( "127.0.0.1" );
        clientService.sin_port          = htons(port);
 
 
        //----------------------
        // Create a SOCKET for connecting to server
        sock1 = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
        if (sock1 == INVALID_SOCKET) {
            wprintf(L"socket failed with error: %ld\n", WSAGetLastError());
            WSACleanup();
            return 1;
        }
 
        //----------------------
        // Connect to server.
        rc = connect( sock1, (SOCKADDR*) &clientService, sizeof(clientService) );
        if (rc == SOCKET_ERROR) {
            wprintf(L"connect failed with error: %d\n", WSAGetLastError() );
            closesocket(sock1);
            WSACleanup();
            return 1;
        }
 
        strcat(buff_out, "GET /");
 
        //----------------------
        // Send an initial buffer
        rc = send( sock1, buff_out, (int)strlen(buff_out), 0 );
        if (rc == SOCKET_ERROR) {
            wprintf(L"send failed with error: %d\n", WSAGetLastError());
            closesocket(sock1);
            WSACleanup();
            return 1;
        }
 
        printf("Bytes Sent: %d\n", rc);
 
        // shutdown the connection since no more data will be sent
        rc = shutdown(sock1, SD_SEND);
        if (rc == SOCKET_ERROR) {
            wprintf(L"shutdown failed with error: %d\n", WSAGetLastError());
            closesocket(sock1);
            WSACleanup();
            return 1;
        }
 
        // Receive data until the server closes the connection
        do {
            rc = recv(sock1, buff_in, DEFAULT_BUFLEN, 0);
 
            if (rc > 0) {
                printf("Bytes received: %d\n", rc);
                puts(buff_in);
            }
 
        } while (1);
 
        /*while(1) 
        {
            sock2 = accept(sock1, NULL, NULL);
 
        }*/
 
 
        return 0;
}
Когда сервер работает клиент успешно с ним соединяется connect(...)
Проблема: когда отсылаю информацию send(...) rc показывает, что, действительно отправилось 5 байт ("GET /"), но сервер , который находится в режиме слушания listen(...) ничего не получает. recv(...).

В сервере ошибок точно нету.
Оттестирован на запросах из браузеров, с помощью Phyton-а, с помощью curl.
Корректно работает вобщем...

Вопрос: WTF?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.05.2012, 17:50
Ответы с готовыми решениями:

WinSock tcp client/server
Может у кого то есть пример простой реализации client/server на winsock ? неважно на каком языке. Мне надо что бы сервер отправлял...

AVT Server/Client Connecting Control
Здравствуйте! Я Программирую чат на visual basic подскажите: мне надо найти объект AVT Server/Client Connecting Control. Дайте пож....

WinSock Server-Client. Не могу найти ошибку
Сервер и клиент. Клиент отсылает строчку, сервер возвращает все символы используя только верхний регистр. Возникло 2 проблемы. 1. Во...

2
 Аватар для igorrr37
2872 / 2019 / 991
Регистрация: 21.12.2010
Сообщений: 3,751
Записей в блоге: 10
28.05.2012, 19:05
клиент рабочий. Пробуй отправить "GET /\r\n"
1
3 / 3 / 1
Регистрация: 13.03.2011
Сообщений: 114
28.05.2012, 19:09  [ТС]
Цитата Сообщение от igorrr37 Посмотреть сообщение
клиент рабочий. Пробуй отправить "GET /\r\n"
То есть проверка окончания запроса - работа внутренностей WinSock а не сервера...
Всё понял.
Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.05.2012, 19:09
Помогаю со студенческими работами здесь

Client does not support authentication protocol requested by server; consider upgrading MySQL client
Всем доброго времени суток, уважаемые форумчане, настраиваю компонент FDConnection указал сервер bd, user , пароль, порт. нажимаю...

#1251 - Client does not support authentication protocol requested by server; consider upgrading MySQL client
При нажатии в localhost denwer на "Проверка MySQL и phpMyAdmin"выскакивает такая страница Состав denwer: PHP 5.3.13, MySQL 5.5,...

UDP Client выбор метода Indy, UdpSocket or winsock
Доброго всем дня! Тема давно избитая но блин почему то не всем удаётся найти на неё ответ. До этого работал с TCP блин вопросов почти не...

использование UDP Sockets, Winsock, Indy Client (TidUDPClient)
Пытаюсь отправить сообщение в 5 байтов "соседней программе" по IP - "localhost" и порту. Из всего возможного заработала схема :(: ...

Udp server-client. server ничего не принимает
Клиент отправляет. сервер запускается, но чтение IdUDPServer1UDPRead не выполняется. подскажите пожалуйста почему сервер не читает. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru