Я использую полнотекстовый поиск с 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 непосредственно перед закрытием сокета. Это не решает проблему.
Есть ли какие-нибудь варианты, которые мне следует использовать?