Параметр полнотекстового запроса для строки полнотекстового запроса недействителен

Я использую полнотекстовый поиск с LINQ в своем приложении, и, поскольку это не поддерживается LINQ, я использую обходной путь функции с табличным значением. Функция создана в SQL Server 2008.

Удивительно, но я получаю сообщение об ошибке «Параметр полнотекстового запроса для строки полнотекстового запроса недействителен», когда ищу простой текст, например «менеджер»

Я использовал SQL Server Profiler и обнаружил, что LINQ сгенерировал параметр как nvarchar (4000) вместо nvarchar (250), который есть в моей функции. IP-адреса и порты фиксируются при запуске. Мы ...

У меня есть протокол подключения, который определил наш клиент. Данные передаются между двумя Linux-компьютерами с использованием протоколов UDP и TCP. IP-адреса и порты фиксируются при запуске.

Мы отправляем сообщения с частотой 200 Гц, и я использовал соединение, чтобы сэкономить время на передаче.

Моя проблема в том, что если есть ошибка связи, мне нужно для разрыва соединений и повторной инициализации.

У меня проблема с одним из UDP-соединений, поскольку оно не выполняет повторную привязку к требуемому адресу и возвращает ошибку 22.

Я использую примерно такой код:

int  
doConnect(int& sock, int local_port, char *local_ip, int remote_port, char *remote_ip)  
{  
    sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP);  
    struct sockaddr_in addr;  

    memset(&addr, 0, sizeof(sockaddr_in);  
    addr.sin_family = AF_INET;  
    addr.sin_port = htons(local_port);  
    inet_pton(local_ip,&addr.sin_addr.s_addr); 

    if (0 > bind(sock, (struct sockaddr*)&addr, sizeof(addr)))  
    {
        printf("Bind Error errno = %d\n", errno);
        return ERR_BIND;  
    }

    memset(&addr, 0, sizeof(sockaddr_in);  
    addr.sin_family = AF_INET;  
    addr.sin_port = htons(remote_port);  
    inet_pton(remote_ip,&addr.sin_addr.s_addr); 

    if (0 > connect(sock, (struct sockaddr*)&addr, sizeof(addr)))  
    {
        printf("Connect Error errno = %d\n", errno);
        return ERR_CONNECT;  
    }
    return ERR_OK;
}

Это используется следующим образом:

int s1(-1), s2(-1);  
doConnect(s1, 31003, "172.17.21.255", 31006, "172.17.21.1");  
doConnect(s2, 31001, "172.17.21.3", 31004, "172.17.21.1");  

При возникновении ошибки

close(s1);
close(s2);

doConnect(s1, 31003, "172.17.21.255", 31006, "172.17.21.1");
doConnect(s2, 31001, "172.17.21.3", 31004, "172.17.21.1");

Здесь локальный адрес 172.17.21.3, и я подключаюсь к 172.17.21.1. s1 слушает широковещательное сообщение.

s1 успешно повторно подключается к удаленному компьютеру, но s2 не работает с ошибкой 22.

Я пробовал явно вызвать bind и подключиться к адресу AF_UNSPEC непосредственно перед закрытием сокета. Это не решает проблему.

Есть ли какие-нибудь варианты, которые мне следует использовать?

1
задан DanS 22 September 2010 в 16:11
поделиться