0 / 0 / 0
Регистрация: 06.11.2014
Сообщений: 8

Socket и понимание команд от telnet

02.12.2014, 15:42. Показов 2780. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем, есть пример TCP сервера:
C
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include <stdio.h>
#include <string.h>    //strlen
#include <stdlib.h>    //strlen
#include <sys/socket.h>
#include <arpa/inet.h> //inet_addr
#include <unistd.h>    //write
#include <pthread.h> //for threading , link with lpthread
 
void *connection_handler(void *);
 
int main(int argc , char *argv[])
{
    int socket_desc , new_socket , c , *new_sock;
    struct sockaddr_in server , client;
    char *message;
 
    //Create socket
    socket_desc = socket(AF_INET , SOCK_STREAM , 0);
    if (socket_desc == -1)
    {
        printf("Could not create socket");
    }
 
    //Prepare the sockaddr_in structure
    server.sin_family = AF_INET;
    server.sin_addr.s_addr = INADDR_ANY;
    server.sin_port = htons( 8888 );
 
    //Bind
    if( bind(socket_desc,(struct sockaddr *)&server , sizeof(server)) < 0)
    {
        puts("bind failed");
        return 1;
    }
    puts("bind done");
 
    //Listen
    listen(socket_desc , 3);
 
    //Accept and incoming connection
    puts("Waiting for incoming connections...");
    c = sizeof(struct sockaddr_in);
    while( (new_socket = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&c)) )
    {
        puts("Connection accepted");
 
        //Reply to the client
        message = "Hello Client , I have received your connection. And now I will assign a handler for you\n";
        write(new_socket , message , strlen(message));
 
        pthread_t sniffer_thread;
        new_sock = malloc(1);
        *new_sock = new_socket;
 
        if( pthread_create( &sniffer_thread , NULL ,  connection_handler , (void*) new_sock) < 0)
        {
            perror("could not create thread");
            return 1;
        }
 
        //Now join the thread , so that we dont terminate before the thread
        //pthread_join( sniffer_thread , NULL);
        puts("Handler assigned");
    }
 
    if (new_socket<0)
    {
        perror("accept failed");
        return 1;
    }
 
    return 0;
}
 
/*
 * This will handle connection for each client
 * */
void *connection_handler(void *socket_desc)
{
    //Get the socket descriptor
    char buffer[256];
    int sock = *(int*)socket_desc;
 
    int read_size;
    char *message , client_message[2000];
 
    //Send some messages to the client
    message = "Greetings! I am your connection handler\n";
    write(sock , message , strlen(message));
 
    message = "Now type something and i shall repeat what you type \n";
    write(sock , message , strlen(message));
 
    //Receive a message from client
    while( (read_size = recv(sock , client_message , 2000 , 0)) > 0 )
    {
        if(client_message == "get")
        {
            printf("COMMAND=%s",client_message);
        }
        //Send the message back to client
        write(sock , client_message , strlen(client_message));
 
    if(read_size == 0)
    {
        puts("Client disconnected");
        fflush(stdout);
    }
    else if(read_size == -1)
    {
        perror("recv failed");
    }
 
    //Free the socket pointer
    free(socket_desc);
 
    return 0;
}
Подскажите как проверять команды поступающие от telnet клиента?
Пробую так:
C
1
if(client_message == "get")
Но он не ловит вводимые команды от telnet.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.12.2014, 15:42
Ответы с готовыми решениями:

Задача на понимание системы команд i386
На работе столкнулись с некоторой задачей. Конкретно для меня она особого интереса не представляет, потому что я intel'овской системой...

QTcpServer и прием команд от telnet
Необходимо написать серверное приложение, которое принимало бы команды от другого приложения, после некоторых действий возвращало бы ему...

Запустить Telnet и выполнить несколько команд
Приветствую всех! Господа, сильно не пинайте, просто совсем не знаю, как телнету передать команды, вручную каждый раз набирать не...

4
deleted
177 / 50 / 5
Регистрация: 29.03.2013
Сообщений: 365
02.12.2014, 16:24
С строки так не сравниваются
0
0 / 0 / 0
Регистрация: 06.11.2014
Сообщений: 8
02.12.2014, 17:26  [ТС]
Да, это я уже понял, сравниваю так:
C
1
if(!(strcmp(client_message, "get")))
И все равно не получается

Пробовал сравнивать так-же с "get\n", т.к. если сделать:
C
1
printf("\"%s\"",client_message);
вывод будет такой:
C
1
2
"get
"
т.е. переменная состоящая из 2х строк

Добавлено через 41 минуту
Проблему решил, необходимо сравнивать с "get\r\n", но это только для linux telnet.
0
5 / 5 / 8
Регистрация: 06.12.2014
Сообщений: 27
07.12.2014, 00:17
yans, тримминг строк (срезание пробельных символов) - весьма полезная вещь.
0
215 / 63 / 25
Регистрация: 30.04.2013
Сообщений: 865
Записей в блоге: 10
09.12.2014, 08:19
Ошибка : Address already in use

вобщем как освободить адрес ,когда он уже испольуеться
Последствие завершения предыдущего запуска подобной программы по средствам ^Z ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.12.2014, 08:19
Помогаю со студенческими работами здесь

Последовательный запуск команд DISM и TELNET
Всем доброго дня. Столкнулся с такой проблемой. При написании бат файла после команд dism /online /Enable-Feature...

Python socket telnet, потоки и ответ сервера
Добрый день всем. Возник вопрос, рассматриваю как общаться с python через telnet, имею код: #!/usr/bin/env python # -*- coding:...

Выполнение команд через telnet клиент. Написание скрипта
Доброго дня. При выполнении команды, к примеру, sh cdp en *, через telnet клиент, коммутатор выводит часть информации и дальше пишет&quot;...

Можно ли организовать выполнение команд Telnet с использованием VBS и Batch?
Есть компьютер на винде 7 и есть компьютер на линуксе. Нужно проверить работает ли процесс в линукс системе и в случае чего перезапустить....

Нужно с помощью команд NetCat и telnet передать по сети любое сообщение
Мне нужно с помощью команд NetCat и telnet передать по сети любое сообщение...Типа на одном компе стоит Netcat,на другом telnet...кину...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Звёздная пыль
kumehtar 20.06.2025
Я просто это себе представляю: как создавался этот мир. Как энергия слипалась в маленькие частички. Как они собирались в первые звёзды, как во вселенной впервые появился Свет. Как эти звёзды. . .
Создание нейросети с PyTorch
AI_Generated 19.06.2025
Ключевое преимущество PyTorch — его питоновская натура. В отличие от TensorFlow, который изначально был построен как статический вычислительный граф, PyTorch предлагает динамический подход. Это. . .
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C# Задание 1: КЛАСС FORM 1 public partial class Form1 : Form { Spisok listin = new Spisok(); . . .
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru