|
|
@@ -69,13 +69,21 @@ void handleCloseSignal(int signal)
|
|
|
|
|
|
int main(int argc, char *argv[])
|
|
|
{
|
|
|
+ char *filename = "/dev/MyDmaModule";
|
|
|
+
|
|
|
socklen_t client_len;
|
|
|
ssize_t n;
|
|
|
struct sockaddr_in serv_addr, client_addr;
|
|
|
+
|
|
|
char recvBuff[1024];
|
|
|
-
|
|
|
- char *filename = "/dev/MyDmaModule";
|
|
|
-
|
|
|
+ // Разделители команд
|
|
|
+ const char charSeparator[] = {"\n"};
|
|
|
+ // Указатель команды
|
|
|
+ char *ptrLexeme = NULL;
|
|
|
+ // Указатель для хранения контекста токенизации
|
|
|
+ char *savePtr = NULL;
|
|
|
+
|
|
|
+/*
|
|
|
pci_fd = open(filename, O_RDWR | O_SYNC);
|
|
|
if (pci_fd == -1) {
|
|
|
int error = errno;
|
|
|
@@ -98,6 +106,7 @@ int main(int argc, char *argv[])
|
|
|
shift_reg(bar1);
|
|
|
ad9912_init(bar1);
|
|
|
lmx2594_init(bar1);
|
|
|
+*/
|
|
|
|
|
|
// Установка обработчика сигналов
|
|
|
signal(SIGINT, handleCloseSignal);
|
|
|
@@ -120,15 +129,10 @@ int main(int argc, char *argv[])
|
|
|
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
|
|
|
serv_addr.sin_port = htons(SERVER_PORT);
|
|
|
|
|
|
- // if (inet_pton(AF_INET, argv[1], &serv_addr.sin_addr) <= 0)
|
|
|
- // {
|
|
|
- // error("inet_pton error occured");
|
|
|
- // }
|
|
|
-
|
|
|
- // if (connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0)
|
|
|
- // {
|
|
|
- // error("Error : Connect Failed");
|
|
|
- // }
|
|
|
+ if (setsockopt(listen_fd, SOL_SOCKET, SO_REUSEADDR, &(int){1}, sizeof(int)) < 0)
|
|
|
+ {
|
|
|
+ error("setsockopt(SO_REUSEADDR) failed");
|
|
|
+ }
|
|
|
|
|
|
if (bind(listen_fd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0)
|
|
|
{
|
|
|
@@ -162,8 +166,22 @@ int main(int argc, char *argv[])
|
|
|
printf("\n Error : Fputs error\n");
|
|
|
break;
|
|
|
}
|
|
|
- //Запуск парсера команд
|
|
|
- processCommand(recvBuff);
|
|
|
+ // Указатель команды
|
|
|
+ ptrLexeme = NULL;
|
|
|
+ // Указатель для хранения контекста токенизации
|
|
|
+ savePtr = NULL;
|
|
|
+
|
|
|
+ // Инициализируем функцию и ищем команду в строке
|
|
|
+ ptrLexeme = strtok_r(recvBuff, charSeparator, &savePtr);
|
|
|
+
|
|
|
+ // Выполняем команды, пока не дойдём до конца приёмного буффера
|
|
|
+ while (ptrLexeme) {
|
|
|
+ //Запуск парсера команд
|
|
|
+ processCommand(ptrLexeme);
|
|
|
+
|
|
|
+ // Ищем команды разделенные разделителем
|
|
|
+ ptrLexeme = strtok_r(NULL, charSeparator, &savePtr);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if (n == 0)
|