Tproxyserver serverlistenexeption socket error 10093

Проблема с сокетами 5 ответов wsaerr = WSAStartup(MAKEWORD(2,0), &wsdata); if (wsaerr != 0) error(8); if ((he = gethostbyname(host))) sin_remote.sin_addr.S_un.S_addr = *(DWORD* ) he->h_addr_list[0]; else sin_remote.sin_addr.S_un.S_addr = inet_addr(host); sin_remote.sin_family = AF_INET; sin_remote.sin_port = htons(80); Это сначала. Потом вызываю поток и в потоке использую getsockopt: DWORD WINAPI thread(void *argv) h_addr_list[0]; else sin_remote.sin_addr.S_un.S_addr = inet_addr(host); sin_remote.sin_family = […]

Содержание

  1. Проблема с сокетами
  2. 5 ответов
  3. Tproxyserver serverlistenexeption socket error 10093
  4. C++ Winsock 10093 error
  5. 2 Answers 2
  6. Проблема с сокетами
  7. 5 ответов
  8. Winsock send fails with error 10093
  9. 2 Answers 2

Проблема с сокетами

5 ответов

wsaerr = WSAStartup(MAKEWORD(2,0), &wsdata);
if (wsaerr != 0)
error(8);

if ((he = gethostbyname(host)))
sin_remote.sin_addr.S_un.S_addr = *(DWORD* ) he->h_addr_list[0];
else
sin_remote.sin_addr.S_un.S_addr = inet_addr(host);
sin_remote.sin_family = AF_INET;
sin_remote.sin_port = htons(80);

Это сначала. Потом вызываю поток и в потоке использую getsockopt:

DWORD WINAPI thread(void *argv)
<
SOCKET s = 0;
int rcv_size, snd_size, sz = sizeof(int);
long ptr = 0, bytesRead = 0, p_size = MAX_BUF;

int cnt = 0;
char number[10];
char *query_str;
char *recv_str, *send_str, *szPage, *tmp;

int exp_count = 0;
int ovector[VECT_SIZE];
char substring[MAX_STR];
int matches = 0;

s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
printf(«Call socket(), Last error: %dn», GetLastError());

getsockopt(s, SOL_SOCKET, SO_SNDBUF, (char*)&snd_size, &sz);
printf(«Last error: %d», GetLastError());
if ((send_str = (char*)malloc(snd_size)) == NULL)
error(10);

getsockopt(s, SOL_SOCKET, SO_RCVBUF, (char*)&rcv_size, &sz);
printf(«Last error: %d», GetLastError());
if ((recv_str = (char*)malloc(rcv_size)) == NULL)
error(10);

closesocket(s);
. и т.д

Дает сбои постоянно. Вот например сейчас программа работает, до этого не работала. Что это?

Источник

Tproxyserver serverlistenexeption socket error 10093

С 1 июля 2017 прекращена поддержка программного продукта Frontol 4
С 9 ноября 2019 прекращена поддержка программного продукта Frontol 5
пруф

С 3 августа 2017 восстановление лицензий производится ТОЛЬКО через СервисДеск
Просьба обращаться к партнерам компании для оформления заявок в СД

Начинающий

Группа: Пользователи
Сообщений: 73
Регистрация: 8.8.2017
Пользователь №: 146 777

Добрый день. Столкнулся с такой проблемой, недавно продавец прислал ошибку во Фронтол, что место на диске переполнено, полез копать и долго не мог найти, что занимает место. Оказалось, что место на сотни гигабайт занимают файлы логов по пути C:Program Files (x86)ATOLSHTRIH-MBinOFDConnectLogs. Они примерно следующего содержания:
[13.03.2018 11:17:54.777] [00004148] [DEBUG] Tofdconnect =============================================================
[13.03.2018 11:17:54.824] [00004148] [DEBUG] Tofdconnect Запуск службы
[13.03.2018 11:17:54.824] [00004148] [DEBUG] Tofdconnect =============================================================
[13.03.2018 11:17:55.012] [00004148] [DEBUG] TProxyServer Start
[13.03.2018 11:17:55.012] [00004148] [DEBUG] TProxyServer ver.1.0.0.1
[13.03.2018 11:17:55.012] [00004148] [DEBUG] TProxyServer Start server at port 7878
[13.03.2018 15:22:52.061] [00004148] [DEBUG] Tofdconnect Svc.OnShutdown
[13.03.2018 15:22:52.090] [00004376] [ERROR] TProxyServer ServerListenExeption: Socket Error # 10093

[13.03.2018 15:22:52.090] [00004380] [ERROR] TProxyServer ServerListenExeption: Socket Error # 10093

Есть файлы размером килобайты, а есть сотни гигабайт, которые к текстовом редакторе не открываются, названия файлов ofdconnectsvc_2018.03.13.log
Полез по магазинам проверять, оказалось, что эти же файлы забили место на диске на 5 магазинах, т.е. это не единичный случай.
Как я понял, примерно эта же информация, видимо и забивается на сотни гигабайт в лог-файлах.
Подскажите, что это может быть, что за службы ? И как это контролировать в авто-режиме?

Магистр слова

Группа: Специалисты
Сообщений: 5 968
Регистрация: 15.8.2012
Пользователь №: 57 857

Начинающий

Группа: Пользователи
Сообщений: 90
Регистрация: 3.11.2009
Пользователь №: 18 597

Добрый день. Столкнулся с такой проблемой, недавно продавец прислал ошибку во Фронтол, что место на диске переполнено, полез копать и долго не мог найти, что занимает место. Оказалось, что место на сотни гигабайт занимают файлы логов по пути C:Program Files (x86)ATOLSHTRIH-MBinOFDConnectLogs. Они примерно следующего содержания:
[13.03.2018 11:17:54.777] [00004148] [DEBUG] Tofdconnect =============================================================
[13.03.2018 11:17:54.824] [00004148] [DEBUG] Tofdconnect Запуск службы
[13.03.2018 11:17:54.824] [00004148] [DEBUG] Tofdconnect =============================================================
[13.03.2018 11:17:55.012] [00004148] [DEBUG] TProxyServer Start
[13.03.2018 11:17:55.012] [00004148] [DEBUG] TProxyServer ver.1.0.0.1
[13.03.2018 11:17:55.012] [00004148] [DEBUG] TProxyServer Start server at port 7878
[13.03.2018 15:22:52.061] [00004148] [DEBUG] Tofdconnect Svc.OnShutdown
[13.03.2018 15:22:52.090] [00004376] [ERROR] TProxyServer ServerListenExeption: Socket Error # 10093

[13.03.2018 15:22:52.090] [00004380] [ERROR] TProxyServer ServerListenExeption: Socket Error # 10093

Есть файлы размером килобайты, а есть сотни гигабайт, которые к текстовом редакторе не открываются, названия файлов ofdconnectsvc_2018.03.13.log
Полез по магазинам проверять, оказалось, что эти же файлы забили место на диске на 5 магазинах, т.е. это не единичный случай.
Как я понял, примерно эта же информация, видимо и забивается на сотни гигабайт в лог-файлах.
Подскажите, что это может быть, что за службы ? И как это контролировать в авто-режиме?

Источник

C++ Winsock 10093 error

I’m trying to build a server in C++ which can accept multiple number of clients. For that purpose I built a winsock wrapper and using threading with boost for communication for each clients.
I encountered a strange problem when trying to accept clients, I have a loop that looks like this.

Now, the first client accepts fine and the WSAGetLastError() returns 0, but after the first one connected, even if I dont trying to connect another it just keep writing in the console 10093, which means the Accept() in the loop stoppped blocking and for some reason wont accept properly. I read online that this error caused by not calling WSAStartup() but I did called it in the socket’s constructor and it did accept in the first time.

2 Answers 2

10093 is WSANOTINITIALISED , which means that either:

a socket call is being made before WSAStartup() has been called at all.

a socket call is being made after WSACleanup() has been called as many times as WSAStartup() was called.

Based on the code you have provided, it appears that Socket::Accept() is returning a Socket object by value instead of a Socket* pointer. If so, then Accept() is creating a temporary Socket that goes out of scope immediately after Socket *socket is assigned. Chances are that the Socket destructor is calling WSACleanup() when it should not be. Calls to WSAStartup() and WSACleanup() must be balanced at all times.

The best time to call WSAStartup() is during program startup, not inside in an object’s constructor. And likewise, the best time to call WSACleanup() is during program cleanup before exit, not inside of an object’s destructor.

Источник

Проблема с сокетами

5 ответов

wsaerr = WSAStartup(MAKEWORD(2,0), &wsdata);
if (wsaerr != 0)
error(8);

if ((he = gethostbyname(host)))
sin_remote.sin_addr.S_un.S_addr = *(DWORD* ) he->h_addr_list[0];
else
sin_remote.sin_addr.S_un.S_addr = inet_addr(host);
sin_remote.sin_family = AF_INET;
sin_remote.sin_port = htons(80);

Это сначала. Потом вызываю поток и в потоке использую getsockopt:

DWORD WINAPI thread(void *argv)
<
SOCKET s = 0;
int rcv_size, snd_size, sz = sizeof(int);
long ptr = 0, bytesRead = 0, p_size = MAX_BUF;

int cnt = 0;
char number[10];
char *query_str;
char *recv_str, *send_str, *szPage, *tmp;

int exp_count = 0;
int ovector[VECT_SIZE];
char substring[MAX_STR];
int matches = 0;

s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP);
printf(«Call socket(), Last error: %dn», GetLastError());

getsockopt(s, SOL_SOCKET, SO_SNDBUF, (char*)&snd_size, &sz);
printf(«Last error: %d», GetLastError());
if ((send_str = (char*)malloc(snd_size)) == NULL)
error(10);

getsockopt(s, SOL_SOCKET, SO_RCVBUF, (char*)&rcv_size, &sz);
printf(«Last error: %d», GetLastError());
if ((recv_str = (char*)malloc(rcv_size)) == NULL)
error(10);

closesocket(s);
. и т.д

Дает сбои постоянно. Вот например сейчас программа работает, до этого не работала. Что это?

Источник

Winsock send fails with error 10093

I am writing a bittorrent client and need to contact multiple trackers over a tcp connection. In order to do this I wrote a winsock wrapper class shown below:

The program starts by assigning a new trackerSocket class to a variable. The trackerInitialize function is called on this function and if successful, the class is pushed onto a vector to store all the working trackers. Here is the trackerInitialize function:

Then the program performs code to generate the message to be sent to the trackers. For each tracker class in the vector it’s trackerSend function is called with the message, here is the trackerSend function:

Every time the program runs the send function returns -1 for every tracker. If I call the WSAGetLastError() function it returns 10093. The msdn definition for this error is:

Successful WSAStartup not yet performed. Either the application has not called WSAStartup or WSAStartup failed. The application may be accessing a socket that the current active task does not own (that is, trying to share a socket between tasks), or WSACleanup has been called too many times.

I can’t see that WSACleanup has been called too many times so I can only assume that the socket is not owned by the current active task (no idea what that means), can anyone see the problem?

Heres some of the code for the main program (which I have described above):

2 Answers 2

From your code you shouldn’t call WSACleanup on the send, if one tracker fails to send you will decrease the internal counter and if it reaches 0 the system will require a new WSAStartup that you aren’t calling.

I suggest you call only one time the WSAStartup (ex. at the start of the application) and only one time the WSACleanup. (ex. end of application)

I have managed to figure out the problem after taking a break from the code. I believe that the problem is described in this SO question and answer:

What you have to know about vectors in c++ is that they have to use the copy operator of the class of your objects to be able to enter them into the vector. If you had memory allocation in these objects that was automatically desallocated when the destructor was called, that could explain your problems : your object was copied into the vector then destroyed.

If you have, in your object class, a pointer that points towards a buffer allocated, a copy of this object will point towards the same buffer (if you use the default copy operator). If the destructor desallocates the buffer, when the copy destructor will be called, the original buffer will be desallocated, therefore your data won’t be available anymore.

This problem doesn’t happen if you use pointers, because you control the life of your elements via new/destroy, and the vector functions only copy pointer towards your elements.

After changing the vector to store pointers to the trackerSocket class instead of just copies of trackerSocket classes and changing the calls to the trackerSocket functions in the vector (. to ->) the problem was successfully fixed. Here are the changes I made:

Источник


Автор
Тема: (решено) Не могу настроить ОФД коннект  (Прочитано 10032 раз)


Здравствуйте. Не могу настроить ОФД коннект. Что делаю не так?
Кажется все по инструкции.
По RNDIS все работает, потом настраиваю ОФД коннект Прочитать/Определить/Записать/Применить. Порт на 7878 открыт.
В логе ОФД коннект

[12.10.2018 10:35:08.554] [00008612] [DEBUG] TProxyServer Connect: 192.168.137.111
[12.10.2018 10:35:08.555] [00008612] [ERROR] TProxyServer Not found profile for 192.168.137.111
[12.10.2018 10:35:08.556] [00008612] [ERROR] TProxyServer Not found client192.168.137.111

Как буд-то не находит кассу.
Буду благодарен за помощь

« Последнее редактирование: 02 Декабря 2019, 11:14:39 от Селихов Дмитрий »


Записан


Здравствуйте. Не могу настроить ОФД коннект. Что делаю не так?
Кажется все по инструкции.
По RNDIS все работает, потом настраиваю ОФД коннект Прочитать/Определить/Записать/Применить. Порт на 7878 открыт.
В логе ОФД коннект

[12.10.2018 10:35:08.554] [00008612] [DEBUG] TProxyServer Connect: 192.168.137.111
[12.10.2018 10:35:08.555] [00008612] [ERROR] TProxyServer Not found profile for 192.168.137.111
[12.10.2018 10:35:08.556] [00008612] [ERROR] TProxyServer Not found client192.168.137.111

Как буд-то не находит кассу.
Буду благодарен за помощь

Почему у Вас сервер ОФД имеет адрес 192.168.137.1? поменяйте на адрес сервера ОФД (на последнем скрине)


Записан


Потому что, когда активируешь ОФД коннект в таблицах записывается адрес РНДИС


Записан


Потому что, когда активируешь ОФД коннект в таблицах записывается адрес РНДИС

 в том поле должен стоять адрес сервера ОФД


Записан


При настройке ОФД коннект все должно быть так как на том скриншоте


Записан


Не расшаривайте соединение и задайте ip адрес рндис соединения как 192.168.137.1

Так же ВАЖНО запустит тест драйвер от имени админа и убрать галочку вести лог


Записан


Вот инструкция по настройке OFDConnect.


Записан

С уважением, Селихов Дмитрий Юрьевич
Ведущий инженер
отдела технической поддержки АО «Штрих-М»
mailto:support@shtrih-m.ru
тел. (495) 787-60-96.


Может кому поможет… Была такая же проблема в логах «TProxyServer Not found profile for 192.168.137.111»
Заметил в папке C:Program FilesSHTRIH-MDrvFR 4.14BinOFDConnect файл KKTProfiles.ini который оказался пустой!
Назначил в свойствах ofdconnectsvc.exe и DrvFRTst.exe «Всегда запускать с правами админа», переопределил настройки в Тесте драйвера и, Аллилуйя, все заработала. Гори Билл Гейтс в аду со своей W10…


Записан


Записан

С уважением, Селихов Дмитрий Юрьевич
Ведущий инженер
отдела технической поддержки АО «Штрих-М»
mailto:support@shtrih-m.ru
тел. (495) 787-60-96.


Не расшаривайте соединение и задайте ip адрес рндис соединения как 192.168.137.1

Так же ВАЖНО запустит тест драйвер от имени админа и убрать галочку вести лог

Всем спасибо за информацию. Помог этот способ настройки.


Записан


Рад, что проблема решена.


Записан

С уважением, Селихов Дмитрий Юрьевич
Ведущий инженер
отдела технической поддержки АО «Штрих-М»
mailto:support@shtrih-m.ru
тел. (495) 787-60-96.


Записан

I’m trying to build a server in C++ which can accept multiple number of clients. For that purpose I built a winsock wrapper and using threading with boost for communication for each clients.
I encountered a strange problem when trying to accept clients, I have a loop that looks like this.

int clientID = 0;
listenSocket = new Socket(SocketType::TCP);
listenSocket->Bind(port);
listenSocket->Listen();

while(running)
{
    Socket *socket = &listenSocket->Accept();
    mutex.lock();
    clients.push_back(new Client(socket,  clientID));
    mutex.unlock();

    std::cout << "Client with id " << clientID << " connected!" << std::endl;

    std::cout << WSAGetLastError() << std::endl;

    clientID++;
}

Now, the first client accepts fine and the WSAGetLastError() returns 0, but after the first one connected, even if I dont trying to connect another it just keep writing in the console 10093, which means the Accept() in the loop stoppped blocking and for some reason wont accept properly. I read online that this error caused by not calling WSAStartup() but I did called it in the socket’s constructor and it did accept in the first time.

Bo Persson's user avatar

Bo Persson

89.8k31 gold badges144 silver badges201 bronze badges

asked May 10, 2013 at 7:20

UnTraDe's user avatar

1

10093 is WSANOTINITIALISED, which means that either:

  • a socket call is being made before WSAStartup() has been called at all.

  • a socket call is being made after WSACleanup() has been called as many times as WSAStartup() was called.

Based on the code you have provided, it appears that Socket::Accept() is returning a Socket object by value instead of a Socket* pointer. If so, then Accept() is creating a temporary Socket that goes out of scope immediately after Socket *socket is assigned. Chances are that the Socket destructor is calling WSACleanup() when it should not be. Calls to WSAStartup() and WSACleanup() must be balanced at all times.

The best time to call WSAStartup() is during program startup, not inside in an object’s constructor. And likewise, the best time to call WSACleanup() is during program cleanup before exit, not inside of an object’s destructor.

answered May 10, 2013 at 8:35

Remy Lebeau's user avatar

Remy LebeauRemy Lebeau

536k30 gold badges444 silver badges750 bronze badges

1

I was having the exact same problem while programming a cross platform socket application. It was working fine on linux and OS X but I was getting this error 10093 on windows. To fix it add this code before calling any of the winsock functions:

    #ifdef WIN32
        // Initialize Winsock
        int iResult;
        WSADATA wsaData;
        iResult = WSAStartup(MAKEWORD(2,2), &wsaData);
        if (iResult != 0) {
            std::cout << "WSAStartup failed: " << iResult << std::endl;
            return;
        }
    #endif

answered Jan 18, 2017 at 0:40

Yiannis Mpourkelis's user avatar

1

Итак, я создаю многопоточную библиотеку сокетов в Windows и получаю сообщение об ошибке WSA Not Started при вызове recv, хотя я успешно получаю клиент для подключения к серверу. У меня также это работало до того, как я его нарезал, но я не знаю, что произошло с тех пор. Любая помощь будет оценена по достоинству.

Spocket.hpp

    #include <iostream>
    #include <string>
    #include <Windows.h>
    #pragma comment (lib,"ws2_32.lib")

    static bool initialized_ = false;

    class Spocket
    {
    protected:
        WSADATA         wsaData_;
        SOCKET          hSocket_;
        sockaddr_in     service_;
        std::string     addr_;
        USHORT          port_;
        int             exitCode_;

    public:
        Spocket() { 
            initialize(); 
            create_socket(); 
        }
        Spocket(std::string addr, USHORT port)
            : addr_( addr ), port_( port ) { 
                initialize(); 
                create_socket(); 
        }
        Spocket(Spocket spock, SOCKET sock)
            : hSocket_( sock ), 
            wsaData_( spock.wsaData_ ),
            service_( spock.service_ ),
            addr_( spock.addr_ ),
            port_( spock.port_ ) 
        { 
            initialize(); 
        }
        virtual ~Spocket() { close(); }

        void initialize();
        void create_socket();
        void close();

        template<typename T>
        int recv_data(T* i) {
            int ret = recv( hSocket_, reinterpret_cast<char*>(i), 32, 0 );
            if( ret == SOCKET_ERROR )
                cerr << WSAGetLastError() << endl;
            return ret;
        }

        template<typename T>
        int send_data(T* i) {
            int ret = send( hSocket_, reinterpret_cast<char*>(i), sizeof(i), 0 );
            if( ret == SOCKET_ERROR )
                cerr << WSAGetLastError() << endl;
            return ret;
        }
    };

class ServerSpocket : public Spocket
{
public:
    ServerSpocket(std::string addr, USHORT port);
    Spocket* accept_clients();
};


class ClientSpocket : public Spocket
{
public:
    ClientSpocket(std::string addr, USHORT port);
};

Spocket.cpp

#include <iostream>
using namespace std;
#include "../include/spocket.hpp"

void Spocket::initialize() {
    if(!initialized_)
    {
        cout << "Initializing socket..." << endl;

        exitCode_ = EXIT_SUCCESS;
        int iResult = WSAStartup( MAKEWORD(2,2), &wsaData_ );
        if( iResult != NO_ERROR ) {
            cerr << "WSAStartup failed" << endl;
            exitCode_ = EXIT_FAILURE;
            close();
        }
        initialized_ = true;
    }
}

void Spocket::create_socket() {
    hSocket_ = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP );
    if( hSocket_ == INVALID_SOCKET )
    {
        cerr << "Error at socket(): " << WSAGetLastError() << endl;
        exitCode_ = EXIT_FAILURE;
        close();
    }

    service_.sin_family = AF_INET;
    service_.sin_addr.s_addr = inet_addr(addr_.c_str());
    service_.sin_port = htons(port_);
}

void Spocket::close() {
    closesocket( hSocket_ );
    WSACleanup();
}

ServerSpocket::ServerSpocket(std::string addr, USHORT port) : Spocket(addr, port) {
    if( bind( hSocket_, (SOCKADDR*)&service_, sizeof(service_) ) == SOCKET_ERROR )
    {
        cerr << "Failed to bind" << endl;
        exitCode_ = EXIT_FAILURE;
        close();
    }

    if( listen( hSocket_, 1 ) == SOCKET_ERROR )
    {
        cerr << "Error listening on socket" << endl;
        exitCode_ = EXIT_FAILURE;
        close();
    }
}

Spocket* ServerSpocket::accept_clients() {
    cout << "Waiting for connection...n";
    SOCKET hAccepted = INVALID_SOCKET;
    while( hAccepted == INVALID_SOCKET )
        hAccepted = accept( hSocket_, NULL, NULL );
    return new Spocket( *this, hAccepted );
}

ClientSpocket::ClientSpocket(std::string addr, USHORT port) : Spocket(addr, port) {
    if( connect( hSocket_, (SOCKADDR*)&service_, sizeof(service_) ) == SOCKET_ERROR )
    {
        cerr << "Failed to connect" << endl;
        exitCode_ = EXIT_FAILURE;
        close();
    }
}

Сервер_main.cpp

#include <iostream>
#include <fstream>
#include <vector>
#include <spocket.hpp>
using namespace std;

vector<HANDLE> hThreads;
vector<DWORD> dwThreadIds;

struct ConnectionInfo
{
    string ip;
    unsigned int port;
    ConnectionInfo( string ip_, unsigned int port_ ) : ip(ip_), port(port_){}
};
static ConnectionInfo ci( "127.0.0.1", 27015 );

DWORD WINAPI clientSession( LPVOID lpParam )
{
    // create new socket to listen for connection attempts
    ConnectionInfo arg = *reinterpret_cast<ConnectionInfo*>(lpParam);
    ServerSpocket listenSock( arg.ip, arg.port );

    // spawn a duplicate thread when a connection is made, and close the current listening socket
    Spocket* sessionSock = listenSock.accept_clients();
    listenSock.close();
    cout << "client connected..." << endl;
    /*
    hThreads.push_back( CreateThread( NULL, 0, clientSession, &ci, 0, NULL ) );
    */

    // service the connected client
    string msg;
    while( sessionSock->recv_data(&msg) != SOCKET_ERROR && msg != "goodbye!" )
    {
        cout << msg << endl;
        msg.clear();
    }

    cout << "finished with client..." << endl;

    // wait quietly for server shutdown
    while( true )
        Sleep( 200 );
    return 0;
}

int main() {
    cout << "[Server]" << endl;
    cout << "starting up..." << endl;

    hThreads.push_back( CreateThread( NULL, 0, clientSession, &ci, 0, NULL ) );

    string input = "";
    do 
        cin >> input;
    while( input != "exit" );

    // close all thread handles here
    cout << "shutting down..." << endl;
    return 0;
}

Понравилась статья? Поделить с друзьями:
  • Tpms система контроля давления ошибка
  • Tpms ошибка мазда cx5
  • Tpms коды ошибок
  • Tpms киа рио ошибка
  • Tpms загорелась ошибка