lanchat 1.1.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/Rakefile +85 -0
  3. metadata +74 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 07e8953fc43b709aa5a5b3552e827716b08c1510
4
+ data.tar.gz: 1092dd9b107b42e0974d922710f5a78ccb9b8ad7
5
+ SHA512:
6
+ metadata.gz: f7dbb51525cdd016d376e080bb7b256612c09ff350eedd310de4ce3ea0d5efe795e00f663ace7d3e64d9ed2deb6e18bcf4952087129991cffd1ee6a058c8966c
7
+ data.tar.gz: 561e011d7f94bffc1a2d4c98ee12fbc0f7993e0f2380cd29dc804a6d0ae0c5ec6278ed564003e339a788844ae0e48a7a47d753e00693499522df1b3e9b26014d
data/lib/Rakefile ADDED
@@ -0,0 +1,85 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ # import "../lib/tasks/start_server.rake".
4
+
5
+ # spec = Gem::Specification.find_by_name 'start_server'
6
+ # load "#{spec.gem_dir}/tasks/start_server.rake"
7
+
8
+ # task :default => [:start_server]
9
+
10
+ # task :start_server do
11
+ # ruby "lanchat.rb"
12
+ # end
13
+
14
+
15
+ require "rubygems"
16
+ require "bundler/setup"
17
+
18
+ task "start_server" do
19
+ require "lanchat/version"
20
+ require "socket"
21
+ module Lanchat
22
+
23
+ class ChatServer
24
+
25
+ def initialize( port )
26
+ @descriptors = Array::new
27
+ @serverSocket = TCPServer.new( "", port )
28
+ @serverSocket.setsockopt( Socket::SOL_SOCKET, Socket::SO_REUSEADDR, 1 )
29
+ printf("Chatserver started on port %d\n", port)
30
+ @descriptors.push( @serverSocket )
31
+ end # initialize
32
+
33
+ def run
34
+ while 1
35
+ res = select( @descriptors, nil, nil, nil )
36
+ if res != nil then
37
+ # Iterate through the tagged read descriptors
38
+ for sock in res[0]
39
+ # Received a connect to the server (listening) socket
40
+ if sock == @serverSocket then
41
+ accept_new_connection
42
+ else
43
+ # Received something on a client socket
44
+ if sock.eof? then
45
+ str = sprintf("Client left %s:%s\n",
46
+ sock.peeraddr[2], sock.peeraddr[1])
47
+ broadcast_string( str, sock )
48
+ sock.close
49
+ @descriptors.delete(sock)
50
+ else
51
+ str = sprintf("[%s|%s]: %s",
52
+ sock.peeraddr[2], sock.peeraddr[1], sock.gets())
53
+ broadcast_string( str, sock )
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
60
+
61
+ private
62
+ def broadcast_string( str, omit_sock )
63
+ @descriptors.each do |clisock|
64
+ if clisock != @serverSocket && clisock != omit_sock
65
+ clisock.write(str)
66
+ end
67
+ end
68
+ print(str)
69
+ end # broadcast_string
70
+
71
+ def accept_new_connection
72
+ newsock = @serverSocket.accept
73
+ @descriptors.push( newsock )
74
+ newsock.write("You're connected to the Ruby chatserver\n")
75
+ str = sprintf("Client joined %s:%s\n",
76
+ newsock.peeraddr[2], newsock.peeraddr[1])
77
+ broadcast_string( str, newsock )
78
+
79
+ end # accept_new_connection
80
+ end #server
81
+ myChatServer = ChatServer.new(2000)
82
+ myChatServer.run
83
+ end
84
+ end
85
+
metadata ADDED
@@ -0,0 +1,74 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lanchat
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.1.8
5
+ platform: ruby
6
+ authors:
7
+ - Amardeep
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2015-10-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.8'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.8'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ description: " just install gem and and type rake start_server."
42
+ email:
43
+ - amardeep129@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - lib/Rakefile
49
+ homepage: ''
50
+ licenses:
51
+ - MIT
52
+ metadata: {}
53
+ post_install_message:
54
+ rdoc_options: []
55
+ require_paths:
56
+ - "../lib"
57
+ required_ruby_version: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ required_rubygems_version: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ requirements: []
68
+ rubyforge_project:
69
+ rubygems_version: 2.4.6
70
+ signing_key:
71
+ specification_version: 4
72
+ summary: Ruby gem lanchat makes it easy to chat on local lan with command line.
73
+ test_files: []
74
+ has_rdoc: