Вопрос : Программа гнезда RPG вися дальше соединяется ()

Во-первых, я нов к программировать гнезда. Я считал большие консультационные он-лайн и am повторно используя Кодего от его. Я использую программу гнезда для посылки hex команд к табло продукции. Hex команды инкрементируют/счетчики затухания, etc на board.

In моя программа гнезда, я посылают бинарные/hex команды к различным 8 портам входного сигнала для доски к процессу. В этом примере, я использую средство программирования для посылки бинарного командование сымитировать входной сигнал 1 (полный отсчет). Программа гнезда случайно будет возвращать ошибку она не smogла соединить к host.

Ex:

I может побежать моя программа 70x в пределах минуты или так и оно инкрементирует полный счетчик 70x. Все отлично. После этого, из nowhere, после того как я вызывана, программа пытается наладить связьо на порте 4001 и она висит. Она после этого возвращает ошибку заявляя она не smogло наладить связьо к хозяину в пределах перерыва period.

As для работы/не работая, его кажется вполне случайно. Я могу создать гнездо, послать, и близко гнездо несколько времен и все отлично. Я могу после этого ждать 3 минуты и послать, и программа висит на функции соединять. Все идеи?

thanks заранее - Adam
class= " ясное " >
> " codeSnippet " class=
class= " lineNumbers "
class=
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:
носок = гнездо " class= " id= " codeSnippet794419
eval                       
             (AF_INET: SOCK_STREAM: IPPROTO_IP)

если соединитесь, то (носок: p_connto: addrlen) < 0   
eval заблуждается = errno                            
callp близкое (носок)                            
callp умирает ('соединитесь (): '+%str (strerror (заблуждайтесь))) 
возвратите                                           
endif                                            

eval rc = посылает (носок: %addr (activeCmd): 4: 0) 
                                                
если rc < 4                                
eval заблуждается = errno                           
callp близкое (носок)                           
callp умирает (%str (strerror (заблуждайтесь)))              
возвратите                                          
endif                                           

eval rc = Recv (носок: %addr (activeCmd): 4: 0) 
e что-нибыдь если никакие байты не возвратили                 
если rc < 1                                
callp близкое (носок)                           
callp умирает (%str (strerror (заблуждайтесь)))              
возвратите                                          
endif
class=

Ответ : Программа гнезда RPG вися дальше соединяется ()

Далеко как нэп серии передает, я реально люблю звук того, но не знаю он.

Огорченно… Нэп -- Бесконечная программа.

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

Ваша программа начала бы путем раскрывать соединение гнезда. После этого она сидела бы пока ждущ вход для того чтобы приехать на данные queue. Когда вход появился, он послал бы его через гнездо и пошел бы назад увидеть если другой вход находился на косе данных.

Он мог потратить 99.999% из своего времени как раз. Любой число программ от других работ smog посылать команды к одиночной косе данных.

Если обязательно, коса данных smogла быть пользована ключом так как каждое командование имело уникально обозначение, возможно после того как она выведена от GENUUID API. Когда командование вытягивано от косы и послало вне гнездо, уникально удостоверение личности использовано для того чтобы послать подтверждение назад через косу данных. Только посылая работа знала бы которым ключом было подтверждение для его. Коса данных обеспечила бы двустороннюю связь между вашими работами и вашим «сервером гнезда».

Если том был настолько много, то ваш сервер не smog держать вверх, вы просто начали бы второе одно.

«Сервер гнезда» имел бы все необходим для того чтобы сделать вашу работу гнезд. Он не имел бы никакие усложнения от понять команды от косы данных -- он как раз посылает показывает вверх. Держите логику сфокусировано в славно отделенных proc, модулях и программах -- опрятное разделение труда.

Ваши «программы клиента» также будут просто. Все, котор они делают будет ручкой соотвествующие командные строки и посылает их к косе данных. (Опционно, это будет двухсторонней косой данных; но то могло быть более последнее повышение. Сделайте им работу, тогда сделайте ее более лучшим.)

Если вы бедный человек использовали косы данных, то вы должны считать их гораздо легке чем гнезда.

Tom
Другие решения  
  •  Как я добавляю кнопки на форме PDF для того чтобы добавить/извлекаю рядки данных?
  •  Шнур ошибки в блоке задвижки?
  •  сколько вариант сервера SQL на одной машине
  •  Внешний вид 2007 не может архивный файл открытой сети сохраненный
  •  Активно директория DNS записывает вопрос
  •  Отчет о доступа 2010 экспорта к CSV с коллекторами?
  •  Прокладчик OCE 9400 не начинает
  •  как добавить десятичное место в формуле в отчете о кристалла seagate
  •  Windows XP и Мичрософт Оутлоок и проблемы установителя Windows
  •  VB6 к VS2010 - консультации тренировки?
  •  
    programming4us programming4us