{"id":985,"date":"2014-02-16T14:25:20","date_gmt":"2014-02-16T07:25:20","guid":{"rendered":"http:\/\/kusumotolab.com\/?p=985"},"modified":"2014-02-16T16:30:16","modified_gmt":"2014-02-16T09:30:16","slug":"ruby-simple-socket-promgraming","status":"publish","type":"post","link":"https:\/\/oldblog.kusumotolab.com\/?p=985","title":{"rendered":"Ruby Simple Socket Promgraming"},"content":{"rendered":"<h2>Simple Server Socket<\/h2>\n<pre lang=\"ruby\">require 'socket'\r\ni = 0;\r\nserver = TCPServer.new(\"\",2000)\r\n\r\nloop {\r\ni = i+1\r\nThread.start(server.accept) do |client|\r\nclient.puts(Time.now.ctime)\r\nclient.puts \"Closing the Connection\"\r\nclient.close\r\nputs i.to_s\r\nend\r\n}<\/pre>\n<h2>Simple Client Socket<\/h2>\n<pre lang=\"ruby\">require 'socket'\r\ns = TCPSocket.new('localhost',2000)\r\n\r\nwhile line = s.gets\r\n  puts line\r\n end\r\n\r\n s.close<\/pre>\n<h2>HTTP Socket 1<\/h2>\n<pre lang=\"ruby\">require 'socket'\r\n\r\nhost = 'lab.kusumotolab.com'               # The web server\r\nport = 80                               # Default HTTP port\r\npath = \"\/\"                    # The file we want\r\n\r\n# This is the HTTP request we send to fetch a file\r\nrequest = \"GET #{path} HTTP\/1.0\\r\\n\\r\\n\"\r\n\r\nsocket = TCPSocket.open(host,port)      # Connect to server\r\nsocket.print(request)                   # Send request\r\nresponse = socket.read                  # Read complete response\r\n\r\n# Split response at first blank line into headers and body\r\nheaders,body = response.split(\"\\r\\n\\r\\n\", 2)\r\nprint body                              # And display it<\/pre>\n<h2>HTTP Socket 2<\/h2>\n<pre lang=\"ruby\">require 'socket'\r\n\r\naddr = Addrinfo.tcp('lab.kusumotolab.com',80)\r\naddr.connect do |socket|\r\nsocket.puts \"GET \/index.html HTTP\/1.0\\r\\n\\r\\n\"\r\nwhile line = socket.gets;\r\n  puts line\r\nend\r\nend<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Simple Server Socket require &#8216;socket&#8217; i = 0; server = TCPServer.new(&#8220;&#8221;,2000) loop { i = i+1 Thread.start(server.accept) do |client| client.puts(Time.now.ctime) client.puts &#8220;Closing the Connection&#8221; client.close puts i.to_s end } Simple Client Socket require &#8216;socket&#8217; s = TCPSocket.new(&#8216;localhost&#8217;,2000) while line = s.gets puts line end s.close HTTP Socket 1 require &#8216;socket&#8217; host = &#8216;lab.kusumotolab.com&#8217; # The [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"footnotes":"","jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":[]},"categories":[62],"tags":[],"class_list":["post-985","post","type-post","status-publish","format-standard","hentry","category-ruby"],"jetpack_publicize_connections":[],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p3OMEb-fT","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/oldblog.kusumotolab.com\/index.php?rest_route=\/wp\/v2\/posts\/985","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oldblog.kusumotolab.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oldblog.kusumotolab.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oldblog.kusumotolab.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oldblog.kusumotolab.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=985"}],"version-history":[{"count":5,"href":"https:\/\/oldblog.kusumotolab.com\/index.php?rest_route=\/wp\/v2\/posts\/985\/revisions"}],"predecessor-version":[{"id":999,"href":"https:\/\/oldblog.kusumotolab.com\/index.php?rest_route=\/wp\/v2\/posts\/985\/revisions\/999"}],"wp:attachment":[{"href":"https:\/\/oldblog.kusumotolab.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=985"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oldblog.kusumotolab.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=985"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oldblog.kusumotolab.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=985"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}