----Next_Part(Tue_Jan_13_23:43:21_1998_809)-- Content-Type: Text/Plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit ¤Ê¤ó¤È¤« send ¦¤Î¥³¡¼¥É¤Ïư¤¤Þ¤·¤¿:-) From: matz / netlab.co.jp (Yukihiro Matsumoto) Subject: [ruby-list:5874] Re: Are there any sample programs for UDP socket ? Date: Tue, 13 Jan 98 18:44:12 +0900 > ¤µ¤Æ¡¤¤Þ¤º¤¤¤¯¤Ä¤«¤ÎÅÀ¤Ç¼Õºá¤·¤¿Êý¤¬¤è¤¤¤è¤¦¤Êµ¤¤¬¤·¤Þ¤¹¡¥ ¼Õºá¤Ê¤ó¤Æ¤È¤ó¤Ç¤â¤¢¤ê¤Þ¤»¤ó¡£¤³¤ó¤Ê³Ú¤·¤¤¸À¸ì¤òºî¤Ã¤Æ¤¯¤À¤µ¤Ã¤¿¤Î¤Ë:-) > 1. UDP¥Ã¥ÈÀìÍѤΥ¯¥é¥¹¤Ï¤Þ¤À¤¢¤ê¤Þ¤»¤ó¡¥Socket¥¯¥é¥¹¤Ç > C¤È¤Û¤È¤ó¤ÉƱ¤¸¤è¤¦¤Ë¤Ý¤Á¤Ý¤Á¥×¥í¥°¥é¥à¤¹¤ë¤·¤«¤Ê¤¤¤Ç¤¹¡¥ > ÌÌÅݤǤ¹¤Í¡¥Ruby¤é¤·¤¯¤Ê¤¤¤Ç¤¹¤Í¡¥Ä̤ê¤Ç¤¹¡¥¤´¤á¤ó > ¤Ê¤µ¤¤¡¥ C ¤Ê¥Ã¥È¥×¥í¥°¥é¥Þ¤Ë¤Ïʬ¤«¤ê¤ä¤¹¤¤¤È¤¤¤¦Ïä⤢¤ê¤Þ¤¹:-) º£¤Ê¤é UDPsocket ¥¯¥é¥¹¤ËÍ×˾¤ò »¤ë¤È¤¤¤¦¤³¤È¤Ç¤â¤¢¤ê¤Þ¤¹¤è¤Í¡¨Â ²® ¤Â¸À¸ì¤Ç¥·¥¹¥Æ¥à¥³¡¼¥ë¤Îsend¤ò»È¤Ã¤¿¤³¤È¤¬¤¢¤ê¤Þ¤¹¤«¡© ¤Ï¤¤¡£ > Ruby¤Îsend¤Ï´ðËÜŪ¤Ë¥·¥¹¥Æ¥à¥³¡¼¥ë¤Îsend/sendto¤ÈƱ¤¸¤Ç > ¤¹¡¥¤¿¤À¤·¡¤°Ê²¼¤ÎÅÀ¤¬°ã¤¤¤Þ¤¹¡¥ ¤³¤ÎÅÀ¤Ï¥Þ¥Ë¥å¥¢¥ë¤«¤éÆÉ¤ß¼è¤ì¤Þ¤·¤¿¡£ > * sendto¤Î¥¢¥É¥ì¥¹¤Ïpack¤·¤¿ÂΤò»È¤¤¤Þ¤¹¡¥ pack ¤¹¤ë¤Ù¤¥Æ¥ó¥×¥ì¡¼¥È¤ª¤è¤ÓÍ×ÁǤ¬Ê¬¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£¤Ç¤â¡¢¤Õ¤È»×¤¤ ÉÕ¤¤¤Æperl ¤Î¥Þ¥Ë¥å¥¢¥ë¤ä sys/socket.h ¤òį¤á¤Æ¤Ê¤ó¤È¤«¤Ê¤ê¤Þ¤·¤¿¡£ > * Ruby¤Îʸ»úÎó¤ÏŤµ¤òÃΤäƤ¤¤Þ¤¹¤«¤émsg,len¤ÎÂå¤ï > ¤ê¤Ëʸ»úÎó1¤Ä¤ò»È¤¤¤Þ¤¹¡¥ ¤³¤ì¤Ïʸ»úÎó¤ÇÎɤ¤¤Î¤Ç¤¹¤Í¡£¤¢¤ê¤¬¤È¤¦¤´¤¶¤¤¤Þ¤·¤¿¡£ > 3. send(2)¤È¤¤¤¦¤Î¤ÏUNIX¤Îman¤Îsection 2(¥·¥¹¥Æ¥à¥³¡¼¥ë)¤Î > ¹àÌܤȸÀ¤¦°ÕÌ£¤Ç¤¹¡¥ÀâÌÀ¤¬¾¯¤Ê¤¯¤Æ¤´¤á¤ó¤Ê¤µ¤¤¡¥ ¾¯¤Ê¤¯¤È¤âËͤˤÏÄ̤¸¤Æ¤¤¤Þ¤·¤¿¡£¤´°Â¿´²¼¤µ¤¤¡£ > 4. ¤Ê¤Ë¤è¤êRuby¤ÇUDP¥×¥í¥°¥é¥ß¥ó¥°¤ò¤·¤¿¤³¤È¤Î¤¢¤ë¤Ò¤È¤¬¤¤ > ¤Þ¤»¤ó¡¥¥Ð¥°¤¬¤¢¤ë¤«¤â¡¥ ¾¯¤Ê¤¯¤È¤âû¤¤Ê¸»úÎó¤ò send ¤¹¤ë¤À¤±¤Ê¤é¤Ç¤¤Þ¤·¤¿¡£ ¤¤¤¨¤Ð gethostbyname ¤¢¤¿¤ê¤Î¥á¥É¤¬¥¯¥é¥¹¥á¥É¤Ç¤¢¤ë¤³¤È¤¬Ê¬ ¤«¤é¤º¤Ë¤Á¤ç¤Ã¤È¶ìÏ«¤·¤Þ¤·¤¿¡£¥¯¥é¥¹¥á¥É¤¸¤ã¤Ê¤¤¤È¤¹¤ë¤È¤«¤Ã¤³°¤¤¤Î ¤Ç¤¹¤°¤ËÁÛÁü¤Ç¤¤Æ¤·¤«¤ë¤Ù¤¤Ê¤Î¤«¤â¤·¤ì¤Þ¤»¤ó¤¬¡¢·ë¶É¥¹¥³¡¼¥É¤òį¤á ¤Æ¤Æµ¤¤¬ÉÕ¤¤Þ¤·¤¿¡£¥Þ¥Ë¥å¥¢¥ë¤Ë°ì¸À¤¢¤ë¤È¤¦¤ì¤·¤¤¤«¤È»×¤¤¤Þ¤¹¡£ ¤È¤¤¤¦¤³¤È¤Ç¡¢¤È¤ê¤¢¤¨¤ºÆ°¤¤¤¿¥µ¥ó¥×¥ë¤ò¤Ä¤±¤Æ¤ª¤¤Þ¤¹¡£ruby ¤ò»È¤¤¤Ï¤¸ ¤á¤ÆÆü¤¬Àõ¤¤¤Î¤Ç¤ª¤·¤ã¤ì¤Êµ ˤʤäƤ¤¤Ê¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¡¨Âùïõâéî ÉÕ° ¤Î sendto ¥³¥Þ¥ó¥ÉÁêÅö¤Î¤â¤Î¤Ç¤¹¡£ ¤µ¡¢¼¡¤Ï recv ¦¤À¡£ -- ¤È¤·¤Á¤ã¤ó // toshi / tea.forus.or.jp, toshi / csce.kyushu-u.ac.jp ----Next_Part(Tue_Jan_13_23:43:21_1998_809)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Description: udpclnt.rb #! /usr/local/bin/ruby # $Id: udpclnt.rb,v 1.1 1998/01/13 14:40:16 toshi Exp $ # udp socket example - client side # usage: ruby udpclnt.rb host port message require "socket" if ARGV.length ! print "Usage: ruby udpclnt.rb host port message\n" exit 1 end host RGV.shift service RGV.shift message RGV.shift remote_addr ocket.gethostbyname(host) port ocket.getservbyname(service, "udp") server_addr 16, Socket::AF_INET, port, remote_addr[3] ] sockaddr_in CCnNx8" s ocket.open(Socket::PF_INET, Socket::SOCK_DGRAM, 0) s.send(message, 0, server_addr.pack(sockaddr_in)) s.close ----Next_Part(Tue_Jan_13_23:43:21_1998_809)----