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

Ошибка с сокетами 10053

27.05.2015, 03:40. Показов 1500. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Недавно начал изучать сокеты, друг мне подсказал в виде практики сделать простенький эхо-сервер. И тут я столкнулся с первой же проблемой: Клиент и сервер нормально устанавливают соединение между собой и клиент нормально отсылает строку, но сервер просто отказывается её читать и выводит ошибку 10053. Прошерстив немного западные форумы и MSDN (вот описание ошибки оттуда "An established connection was aborted by the software in your host computer, possibly due to a data transmission time-out or protocol error."), я понял, что проблема с тайм-аутом либо с перегрузкой сервера, но я не могу понять в чём именно заключается проблема. Не могли бы вы мне помочь с этим разобраться?
Заранее спасибо
P.S. Пишу на С++ в Visual Studio 2013

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
//Код сервера
#include "stdafx.h"
#include <winsock2.h>
#include <string>
#include <iostream>
 
#pragma comment (lib, "ws2_32.lib") ;
 
#define SERV_IP "127.0.0.1"
#define SERV_PORT 7000
#define BUF_LEN 5
 
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
    
    WORD wVer;
    WSADATA wData;
    wVer = MAKEWORD(2, 0);
    SOCKET s_serv;
    SOCKET s_client;
    struct sockaddr_in srv_addr;
    struct sockaddr_in clnt_addr;
    char *buf = NULL;
 
    int init_er = WSAStartup(wVer, &wData);
    if (!init_er)
    {
        cout << "Init success" << endl;
        s_serv = socket(PF_INET, SOCK_STREAM, 0);
        if (s_serv != INVALID_SOCKET)
        {
            cout << "Serv_socket create success" << endl;
 
            srv_addr.sin_family = AF_INET;
            srv_addr.sin_port = htons(SERV_PORT);
            srv_addr.sin_addr.s_addr = 0;
 
            int bind_er = bind(s_serv, (struct sockaddr *) &srv_addr, sizeof (srv_addr));
            if (bind_er != SOCKET_ERROR)
            {
                cout << "Bind success" << endl;
                listen(s_serv, 1);
                int clnt_len = sizeof (clnt_addr);
                s_client = accept(s_serv, (struct sockaddr *) &clnt_addr, &clnt_len);
                if (s_client != SOCKET_ERROR)
                {
                    cout << "Accept success" << endl;
                    int rec_err = recv(s_client, buf, BUF_LEN, 0);
                    if (rec_err < 0)
                        cout << "Receive error: " << WSAGetLastError() << endl;
                    else if (rec_err == 0)
                        cout << "Connection was closed" << endl;
                    else
                    {
                        cout << "Receive success: " << buf << endl;
                        int send_err = send(s_client, buf, BUF_LEN, 0);
                        if (send_err < 0)
                            cout << "Send error: " << WSAGetLastError() << endl;
                        else
                            cout << "Send success: " << buf << endl;
                    }
                }
                else
                    cout << "Accept error: " << WSAGetLastError() << endl;
            }
            else
                cout << "Bind error: " << WSAGetLastError() << endl;
        }
        else
            cout << "Socket create error: " << WSAGetLastError() << endl;
        int close_er = closesocket(s_serv);
        if (close_er == SOCKET_ERROR)
            cout << "Socket close error: " << WSAGetLastError() << endl;
    }
    else
        cout << "Init error: " << WSAGetLastError() << endl;
    init_er = WSACleanup();
    if (init_er == SOCKET_ERROR)
        cout << "Cleanup error: " << WSAGetLastError() << endl;
    system("pause");
    return 0;
}
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
//Код клиента
#include "stdafx.h"
#include <winsock2.h>
#include <string>
#include <iostream>
 
#pragma comment (lib, "ws2_32.lib") ;
 
#define SERV_IP "127.0.0.1"
#define SERV_PORT 7000
#define BUF_LEN 5
#define BUF "PIDR\0"
 
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
 
    WORD wVer;
    WSADATA wData;
    wVer = MAKEWORD(2, 0);
    SOCKET s_serv;
    SOCKET s_client;
    struct sockaddr_in srv_addr;
    char *buf = BUF;
 
    int init_er = WSAStartup(wVer, &wData);
    if (!init_er)
    {
        cout << "Init success" << endl;
        s_serv = socket(PF_INET, SOCK_STREAM, 0);
        if (s_serv != INVALID_SOCKET)
        {
            cout << "Socket create success" << endl;
 
            srv_addr.sin_family = AF_INET;
            srv_addr.sin_port = htons(SERV_PORT);
            srv_addr.sin_addr.s_addr = inet_addr(SERV_IP);
 
            int con_err = connect(s_serv, (struct sockaddr *) &srv_addr, sizeof(struct sockaddr_in));
                if (con_err != SOCKET_ERROR)
                {
                    cout << "Connect success" << endl;
                    int send_err = send(s_serv, buf, BUF_LEN, 0);
                    if (send_err < 0)
                        cout << "Send error: " << WSAGetLastError() << endl;
                    else
                    {
                        cout << "Send success: " << buf << endl;
                        int rec_err = recv(s_serv, buf, BUF_LEN, 0);
                        if (rec_err < 0)
                            cout << "Receive error: " << WSAGetLastError() << endl;
                        else if (rec_err == 0)
                            cout << "Connection was closed" << endl;
                        else
                            cout << "Receive success: " << buf << endl;
                    }
                }
                else
                    cout << "Connection error: " << WSAGetLastError() << endl;
        }
        else
            cout << "Socket create error: " << WSAGetLastError() << endl;
        int close_er = closesocket(s_serv);
        if (close_er == SOCKET_ERROR)
            cout << "Socket close error: " << WSAGetLastError() << endl;
    }
    else
        cout << "Init error: " << WSAGetLastError() << endl;
    init_er = WSACleanup();
    if (init_er == SOCKET_ERROR)
        cout << "Cleanup error: " << WSAGetLastError() << endl;
    system("pause");
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.05.2015, 03:40
Ответы с готовыми решениями:

Ошибка сокета (10053)
В разрабатываемой программе, связь производится через синхронные сокеты по протоколу TCP. Программа устанавливает связь с другими...

Ошибка Socket 10053
Не подскажете что это за ошибка?? серв procedure TForm1.Button1Click(Sender: TObject); begin if serversocket1.Active=false...

Чат, ошибка сокета 10053
Всем привет, в общем: пишу чат, всё работает нормально, вот только есть один большой минус, если кто то из клиентов крашится или...

1
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
27.05.2015, 18:02
таки Вы под buf память не выделили, он у Вас вообще NULL

C++
1
2
3
4
5
6
7
char buf[BUF_LEN];
 
 
//
 
 
recv(s_client, buf, BUF_LEN, 0);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.05.2015, 18:02
Помогаю со студенческими работами здесь

Робота с сокетами. Ошибка в тексте
//--------------------------------------------------------------------------- #pragma hdrstop ...

Работа с сокетами, ошибка при компиляции в Visual Studio 2013
Помогите пожалуйста в чем ошибка? // Server_new_chat.cpp : Defines the entry point for the console application. // #pragma...

Socket 10053
Делаю програмку которая принимает сигнал с другой программы и выполняет действия через сокеты. Программа которая посылает сигнал...

Ошибка с сокетами: "Адрес несовместим с выбранным протоколом"
У меня проблема случилась. Во время выполнения кода клиента выдаёт ошибку &quot;Адрес несовместим с выбранным протоколом&quot;. Вот код: ...

WinSock. Ошибки 10054 и 10053
Пишу программу (для обучения себя же) для передачи файлов. Использую стандартные сокеты. Все идет нормально до момента передачи...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru