LINUX.ORG.RU

помогите написать несложную программку :)


0

0

Всем приветик!))) обращаюсь ко всем кто может помочь, кто не может просьба не отписывать всякие подколки ;) в общем мне надо написать простенькую программку: "клиент принимает с клавиатуры команды и передает их серверу. сервер выполняет приянтые команды и возварщает результаты их выполнения клиента. принимаемые данные клиент выводит на терминао. программы запускать на разных терминалах" пожалуйста помогите очень срочно надо!!!



ну если так уж срочно надо...

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

собственно главное в написании программы - это открыть редактор. причём не абы какой, а правильны. в гнулинуксе есть много самых разных редакторов, но по общему признанию наиболее подходящий для этих целей является мцедит. конечно, есть ещё имаксы и вимы и пр., но они явно не справляются с возложенными на них задачами и через какое то время вы замечаете, что вместо написания программы вы занимаетесь чем угодно включая жосткий сексом с редактором но только не программой.

так что берём мседит и вперёд. чтобы запустить мцедит нужен терминал. в гнулинуксе есть масса самых разных терминалов. но по опять же общепринятому меннию самым подходящим является кОнсоле. да. если же у вас её нет а, скажем, есть gterm, мы настоятельно рекомендуем вам поставить кадее и там у вас будет кОнсоле. вот.

итого. запускаем из меню приложений кОнсоле. получилось? прекрасно. в большом черном окошечке кОнсоле пишем "mcedit". обычно это выглядит навроде:
$ mcedit
..и нажимаем энтер. получилось? если нет, не переживайте, далеко не у всех это получается с первого раза. попробуйте ещё раз.

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

до новых встреч!

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

>по общему признанию наиболее подходящий для этих целей является мцедит
Что?

anotheranonymous
()

>клиент принимает с клавиатуры команды и передает их серверу. сервер выполняет приянтые команды и возварщает результаты их выполнения клиента

эмм... Консоль + ssh

Или я чего-то не допонял?

delilen ★☆
()
Ответ на: комментарий от delilen

> Или я чего-то не допонял?

конечно же не понял. мальчик хочет, чтобы ему тут курсовуху по-быстрому написали. от и до. сам то он ни в пизду ни в красную армию, так что писать нужно попроще, шоб препод не докопался. причём нашару. что тут ещё понимать то?

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

В чем смысл курсовой я не понял? Ему ssh написать надо или pytty.exe (или как ее там?).

Так давай напишем, за тыщенку баксов... ну то есть пакет консоле дадим...

delilen ★☆
()
Ответ на: комментарий от delilen

>В чем смысл курсовой я не понял?

Ему нужно научиться писать простые сетевые программки. А он даже не выучил название языка программирования, которому их учат. Кто бы дал исходник на брейнфаке, мы бы повеселились :)

Davidov ★★★★
()
Ответ на: комментарий от Davidov

>Ему нужно научиться писать простые сетевые программки.

Пользователь вводит команды, которые передаются на сервер. На сервере они выполняются, и результат показывается пользователю.

Давайте продадим ему ssh.

Я вот этого пункта никак понять не могу... Или ему клиент-серверное приложение нужно?

delilen ★☆
()

telnet подойдет?

urxvt ★★★★★
()
Ответ на: комментарий от jtootf

>это какой-то странный мальчик

Наивность прямо зашкаливает.

Absurd ★★★
()
Ответ на: комментарий от jtootf

> это какой-то странный мальчик

в очередной раз очередной мальчик назвался девочкой дабы пипл чиста хавнул. что-то больно много появилось девочек в Developers за последнее время. оч много.

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от delilen

есть 2 терминала один клиент а другой сервер в клиенте вводятся простенькие команды типа ps -l они отсылаются на сервер там они выполняются и результаты возвращаются клиенту, принятые данные он выводит на терминал

albina
() автор топика
Ответ на: комментарий от albina

Ссылку на исходники я уже дал. Подожди уточню номер своего счета куда будешь деньги переводить.

delilen ★☆
()
Ответ на: комментарий от klalafuda

> до новых встреч!

Я понимаю, что студент тупит, но подсказать все же можно. Вот программа сервера:

netcat -p -l 8080 -c bash

Программа клиента оставляется в качестве ДЗ.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

Причем тут сделана 1 ошибка... чтобы совсем не расслаблялся :-)

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

>netcat -p -l 8080 -c bash

Если я правильно интерпретировал "комманды вводятся с разных терминалов" оно еще форковаться должно.

Absurd ★★★
()
Ответ на: комментарий от www_linux_org_ru

да вы не правильно поняли) сервер это тупо название скрипта в нем просто должна выполнится комнада котрую мы вводим в "клиенте"

albina
() автор топика
Ответ на: комментарий от Absurd

> Если я правильно интерпретировал "комманды вводятся с разных терминалов" оно еще форковаться должно.

Тут это не обязательно, т.к. команда все равно исполняется отдельным процессом.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от Absurd

> Если я правильно интерпретировал "комманды вводятся с разных терминалов" оно еще форковаться должно.

Хотя я проверил щас, ты прав. Оно должно форковаться. Тогда нужно брать socket -f bla-bla-bla

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от albina

>поняла!

Мы верим!

>что не понятного то?


Лично мне - суть задания. И скрипт который будет сервером. То есть параметры должны передаваться скрипту. тот должен делать выборку из чего-то там заложенного и выдавать готовый результат?

man case

delilen ★☆
()
Ответ на: комментарий от Absurd

> Если я правильно интерпретировал "комманды вводятся с разных терминалов" оно еще форковаться должно.

Если так, то программа сервера socket -fblp bash -s 8080

:-)

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от albina

> да вы не правильно поняли) сервер это тупо название скрипта в нем просто должна выполнится комнада котрую мы вводим в "клиенте"

Я все понял, а ты -- нет. Absurd мне правильно указал на дефект прошлой программы сервера, так что вот исправленная:

socket -fblp bash -s 8083

старая тоже работала, только с одного терминала.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от delilen

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

albina
() автор топика
Ответ на: комментарий от www_linux_org_ru

нужно использовать либо каналы либо сигналы, но лучше каналы

albina
() автор топика

Лучше всего воспользоваться современными технологиями ООП - то есть объектно ориентированного программирования. Для сервера и для клинета лучше всего взять готовые компоненты. Тогда вся задача значительно упрощается - нужно будет только правильно связать их. Посмотри вот на этих сайтах, может чего подойдет:

http://www.delphisources.ru/pages/faq/internet_net.html

http://www.delphi.int.ru/?name=components

http://www.delphi.pnz.ru/components.php

LamerOk ★★★★★
()

На можешь дорабатывать ;))
(Осторожно! быдлокод)
cat server.py
======================================= 
#!/usr/bin/env python
import SimpleXMLRPCServer
import subprocess

def system(cmd,key_args,args):
    try:
        res = subprocess.Popen([cmd,key_args,args], stdout=subprocess.PIPE)
        return res.stdout.read()
    except OSError:
        return []

if __name__ == "__main__":
    s = SimpleXMLRPCServer.SimpleXMLRPCServer(('127.0.0.1',2017))
    s.register_function(system)
    s.serve_forever()

cat client.py
================================================ 
#!/usr/bin/env python
import xmlrpclib

if __name__ == "__main__":
    x = xmlrpclib.ServerProxy('http://localhost:2017')
    outstr = x.system("ls","-lah","/")
    print outstr

dimon555 ★★★★★
()


Гугл говорит что это создание запостило это сообщение на множестве линукс форумов, на не на кодерских. Все линуксоиды - программисты?

owlmind
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.