Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > Клиент серверное приложение


Автор: GekaP404 26.9.2006, 16:51
Народ помогите по этому вопросу(клиент серверное приложение) как написать или где и какую информацию посмотреть.  smile 
Благнодарю за внимание!  smile 

Автор: FunnyFalcon 27.9.2006, 11:17
Не WEB? С окошками? Теоретически возможно... :-)
Клиент-серверное - это БД+клиент или 3-х звенка?
Серверную часть можно реализовать и на RubyOnRails (через WEBService).

А вообще я тоже дилетант, и будет интересно услышать хорошие ответы :-)

Автор: GekaP404 27.9.2006, 12:31
FunnyFalcon можеш по подробнее написать о 

Цитата(FunnyFalcon @  27.9.2006,  11:17 Найти цитируемый пост)
Серверную часть можно реализовать и на RubyOnRails (через WEBService).

и
Цитата(FunnyFalcon @  27.9.2006,  11:17 Найти цитируемый пост)
Не WEB? С окошками? Теоретически возможно... :-)

не WEB но с окошками. Как именно  smile  напиши please.

Автор: FunnyFalcon 28.9.2006, 13:00
Цитата

FunnyFalcon можеш по подробнее написать о 

Цитата(FunnyFalcon @  27.9.2006,  11:17 Найти цитируемый пост)
Серверную часть можно реализовать и на RubyOnRails (через WEBService).

Ставишь RubyOnRails (www.rubyonrails.ru), читаешь Agile Web Development with Rails (ссылки здесь: ruby.rostovlinux.ru) глава "The Rails Framework"/"Web Services on Rails". 
Потом к этому можно обращаться через xmlrpc или soap. ( Programming Ruby: The Progmatic Programmer Guide; второе издание я нашел в eMule, могу выслать)

В окошках я профан. Можно и с помощью Tk, если несложные.


Автор: max_lapshin 28.9.2006, 15:28
Для общения с клиентами-программами можно просто выставлять наружу WebService API, в рельсах это делается очень просто.

Автор: GekaP404 3.10.2006, 19:31
Server:
Код

require 'socket'
server = TCPServer.new('172.30.1.71',1000)
while (srv = server.accept)
  str = srv.gets.chomp.split(' ')
  cmd = str[0]
  arg = str[1]
  case cmd
    when ".."
        Dir.chdir("..")
        srv.print "OK!"
    when "ls"
        srv.print Dir.entries(".").join('/n')
    when "cd"
        begin
            Dir.chdir( arg )
            srv.print "OK!"
        rescue
            srv.print "No such file or directory - #{ arg }"
        end
    when "md"
        Dir.mkdir( arg )
        srv.print "OK!" 
    when "rmd"
        begin
            Dir.rmdir( arg )
            srv.print "OK!"
        rescue
            srv.print "No such file or directory - #{ arg }"
        end
    when "shotdown"
        break
    else
        srv.print "Bad Command!"
  end  
  srv.close
end

Client:
Код

require 'socket'
loop{
    t = TCPSocket.new('172.30.1.71',1000)
    sendstr=gets
    break if sendstr=~/exit/ or sendstr =~/close/ 
    t.print sendstr
    ans = t.gets
    if ans.scan("/n")
        ans.split("/n").each{|i|
            p "> #{i}"
        }
    else
        p ">> #{i}"
    end
}


ОГРОМНОЕ СПАСИБО Invalid(mistake)

Автор: Cr@$h 3.10.2006, 19:32

M
Cr@$h
При помещении кода лучше пользоваться выпадающим списком Код вверху формы ответа.

Автор: GekaP404 8.10.2006, 12:00
На днях заморочился с одним вопросом. Как написать клиент сервер для нескольких клиентов при помощи потоков??? Изучал великий “RubyBook Help” (F1), из которого я так практически и ничего не понял. Единственное что понятно там должно быть Thread и fork.
ПОМОГИТЕ !!! РАЗОБРАТЬСЯ или КИНЬТЕ ССЫЛКИ где более ПОНЯТНО(ПОДРОБНО) это НАПИСАНО.
HELP
Код

x = Thread.new { sleep .1; print "x"; print "y"; print "z" }
a = Thread.new { print "a"; print "b"; sleep .2; print "c" }
x.join # Let the threads finish before
a.join # main thread exits...

Автор: max_lapshin 13.10.2006, 10:24
Для того, что бы писать многопоточный или многопроцессный сервер не надо читать RubyBook help. Для этого надо просто знать, как пишутся многопоточные серверы.


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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)