{"id":736,"date":"2016-02-29T20:09:26","date_gmt":"2016-02-29T20:09:26","guid":{"rendered":"http:\/\/www.cs.ubbcluj.ro\/~radu.dragos\/?page_id=736"},"modified":"2021-10-26T10:46:54","modified_gmt":"2021-10-26T10:46:54","slug":"examples","status":"publish","type":"page","link":"https:\/\/www.cs.ubbcluj.ro\/~radu.dragos\/examples\/","title":{"rendered":"Examples"},"content":{"rendered":"<h1>Socket Programming<\/h1>\n<p>VIDEOS:<br \/><a href=\"https:\/\/www.youtube.com\/watch?v=PjDONpsNz1o\" target=\"_blank\" rel=\"noopener\">Sockets Explained<\/a><br \/><a href=\"https:\/\/www.youtube.com\/watch?v=VaSu2sLmY8s\" target=\"_blank\" rel=\"noopener\">UDP in Php<\/a><br \/><a href=\"https:\/\/www.youtube.com\/watch?v=vOJoisKtR-A\" target=\"_blank\" rel=\"noopener\">UDP in Assembly Language (Linux x64)<\/a><br \/><a href=\"https:\/\/www.youtube.com\/watch?v=KdyVS6RrevU\" target=\"_blank\" rel=\"noopener\">UDP in C (3 lines of code)<\/a><\/p>\n<h2>UDP<\/h2>\n<h3>UDP server in PHP<\/h3>\n<pre><strong>&lt;?php<\/strong>\n <strong> $s=socket_create(AF_INET,SOCK_DGRAM,0); \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 <span style=\"color: #000000;\">\u00a0<\/span><\/strong><span style=\"color: #000000;\">\/\/create a UDP socket<\/span>\n <strong> socket_bind($s,'0.0.0.0',5555); \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<\/strong>\/\/bind on all interfaces on port 5555\n <strong> socket_recvfrom($s,$b,10,0,$client_ip,$client_port); \u00a0 \u00a0 <\/strong>\/\/read max 10 bytes from socket $s into buffer $b\n <strong> echo \"Received: \".$b.\" from IP=\".$client_ip.\":\".$client_port;<\/strong>\n <strong> socket_sendto($s,\"hello\",5,0,$client_ip,$client_port); \u00a0\u00a0<\/strong>\/\/send a message back to the client\n <strong> ?&gt;\n<\/strong><\/pre>\n<h3>UDP client\u00a0in PHP<\/h3>\n<pre><strong>&lt;?php\n$s=socket_create(AF_INET,SOCK_DGRAM,0);            \/\/create a UDP socket\nsocket_sendto($s,\"hey\",3,0,\"127.0.0.1\",5555);      \/\/send 3 bytes to the server\nsocket_recvfrom($s,$b,10,0,$serv_ip,$serv_port);   \/\/read max 10 bytes from socket $s into buffer $b\necho \"Received: \".$b.\" from IP=\".$serv_ip.\":\".$serv_port;\n?&gt;<\/strong><\/pre>\n<hr \/>\n<h3>UDP server in Python 2<\/h3>\n<pre><strong>import socket\ns=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)  \ns.bind((\"0.0.0.0\",5555))                           \nbuff,addr=s.recvfrom(10)                           \nprint buff\ns.sendto(\"hello\", addr)                        \n<\/strong><\/pre>\n<h3>UDP client in Python 2<\/h3>\n<pre><strong>import socket<\/strong>\n<strong>s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)\n<\/strong>\n<strong>s.sendto(\"hey\",(\"127.0.0.1\",5555))                 <\/strong>\n<strong>print s.recvfrom(10)                     <\/strong><\/pre>\n<h3>UDP client in Python 3<\/h3>\n<pre>import socket\ns=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)\nmsg=\"hey\"\ns.sendto(str.encode(msg),(\"127.0.0.1\",5555))\nmsg,adr=s.recvfrom(10)\nprint (msg.decode())<\/pre>\n<h3>UDP server in C<\/h3>\n<pre><strong>#include &lt;netinet\/ip.h&gt;\nchar buf[8] = \"xxxxxxxx\";\nint sfd,r;\nstruct sockaddr_in soc,csoc;\nmain (){\n  int clen=sizeof(struct sockaddr_in);\n  sfd = socket (AF_INET, SOCK_DGRAM, 0);\n  \n  soc.sin_family=AF_INET;\n  soc.sin_port=htons(7777);\n  soc.sin_addr.s_addr=inet_addr(\"0.0.0.0\");\n  \n  bind(sfd,&amp;soc,sizeof(struct sockaddr_in));\nr=recvfrom (sfd,buf,100,0,&amp;csoc,&amp;clen);\nbuf[r]=0;\nprintf(\" %d %s\\n\",strlen(buf),buf);\n} <\/strong><\/pre>\n<h3>UDP client in C<\/h3>\n<pre><strong>\n#include &lt;netinet\/ip.h&gt;\nchar buf[8] = \"hello\";\nint sfd;\nstruct sockaddr_in soc;\nmain (){\n  sfd=socket(AF_INET, SOCK_DGRAM, 0);\n  \n  soc.sin_family=AF_INET;\n  soc.sin_port=htons(7777);\n  soc.sin_addr.s_addr=inet_addr(\"127.0.0.1\");\n \n  sendto (sfd,buf,strlen(buf),0,&amp;soc,sizeof(struct sockaddr_in));\n}\n \n} <\/strong><\/pre>\n<h3>UDP client\u00a0in Java<\/h3>\n<pre>import java.io.*;\nimport java.net.*;\n\nclass c\n{\n   public static void main(String args[]) throws Exception\n   {\n      DatagramSocket clientSocket = new DatagramSocket();\n      InetAddress IPAddress = InetAddress.getByName(\"localhost\");\n      byte buf[] = new byte[5];\n      String s=\"12345\";\n      buf=s.getBytes();\n      DatagramPacket sendPacket = new DatagramPacket(buf, 5, IPAddress, 5555);\n      clientSocket.send(sendPacket);\n   }\n}\n<\/pre>\n<hr \/>\n<h2>\u00a0<\/h2>\n<h2><strong>TCP<\/strong><\/h2>\n<h3>TCP server in PHP<\/h3>\n<pre><strong>&lt;?php<\/strong>\n<strong>$s=socket_create(AF_INET,SOCK_STREAM,0);<\/strong>\n<strong>socket_bind($s,\"0.0.0.0\",9999);<\/strong>\n<strong>socket_listen($s);<\/strong>\n<strong>$cs=socket_accept($s);<\/strong>\n<strong>socket_send($cs,\"Hello\",5,0);<\/strong>\n<strong>?&gt;\n<\/strong><\/pre>\n<h3>TCP client in PHP<\/h3>\n<pre><strong>&lt;?php<\/strong>\n<strong>$s=socket_create(AF_INET,SOCK_STREAM,0);<\/strong>\n<strong>socket_connect($s,\"127.0.0.1\",9999);<\/strong>\n<strong>socket_recv($s,$buf,20,0);<\/strong>\n<strong>echo $buf.\"\\n\";<\/strong>\n<strong>?&gt;\n<\/strong><\/pre>\n<h3>TCP server in Python 2<\/h3>\n<pre>import socket\ns=socket.socket(socket.AF_INET,socket.SOCK_STREAM)\ns.bind((\"0.0.0.0\",7777))\ns.listen(5)\ncs,addr=s.accept()\nb=cs.recv(10)\nprint b\ncs.send(\"Hello\")\ncs.close()\n<\/pre>\n<h3>TCP client in Python 2<\/h3>\n<pre>import socket\ns=socket.socket(socket.AF_INET,socket.SOCK_STREAM)\ns.connect((\"127.0.0.1\",7777))\ns.send(\"Salut\")\nprint s.recv(10)\ns.close()\n\n<\/pre>\n<h3>TCP multithreaded server in Python<\/h3>\n<pre>import time\nimport socket\nfrom threading import Thread\ndef f(cs,i):\n print (\"Procesez client\"+str(i))\n b=cs.recv(10)\n time.sleep(10)\n cs.send(str(i))\n cs.close()\ns=socket.socket(socket.AF_INET,socket.SOCK_STREAM)\ns.bind((\"0.0.0.0\",7777))\ns.listen(5)\ni=0\nwhile (1==1):\n i=i+1\n cs,addr=s.accept()\n t=Thread(target=f,args=(cs,i,))\n t.start()\n\n<\/pre>\n\n\n<h3 class=\"wp-block-heading\">Python Multiplexed Chat Server \u2013 using select <\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">import select, socket\ns= socket.socket(socket.AF_INET, socket.SOCK_STREAM)\ns.setblocking(0)\ns.bind(('0.0.0.0', 5555))\ns.listen(5)\n\nins = [s]\nouts = []\nmsg=[]\nwhile ins:\n    r,w,e = select.select(ins,outs,ins)\n    for ss in r:\n        if ss==s:\n            cs,addr=ss.accept()\n            print \"Client from:\",addr\n            ins.append(cs)\n        else:\n             print \"Data from client\"\n             data=ss.recv(100)\n             if data:\n                txt=ss.getpeername()[0]+\":\"+str(ss.getpeername()[1])+\":\"+data\n                print txt\n                msg.append(txt)\n                if ss not in outs:\n                    outs.append(ss)\n             else :\n                print \"Null data, client is gone\"\n                ins.remove(ss)\n                if ss in outs:\n                    outs.remove(ss)\n                ss.close()\n    for ss in e:\n        print \"Error\"\n        ins.remove (ss)\n        if ss in outs:\n          outs.remove(ss)\n        ss.close()\n    for ss in w:\n        for i in msg:\n            ss.send(i)\n    msg=[]\n\n<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Python client for the Multiplexed Chat Server <\/h3>\n\n\n\n<pre class=\"wp-block-preformatted\">import socket,os\r\ns=socket.socket(socket.AF_INET,socket.SOCK_STREAM)\r\ns.connect((\"127.0.0.1\",5555))\r\ns.send(\"Hello\")\r\nif os.fork()==0:\r\n  while 1:\r\n   print s.recv(100)\r\n  exit(0)\r\nwhile 1:\r\n  s.send(raw_input())\r\ns.close()\r\n<\/pre>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Socket Programming VIDEOS:Sockets ExplainedUDP in PhpUDP in Assembly Language (Linux x64)UDP in C (3 lines of code) UDP UDP server in PHP &lt;?php $s=socket_create(AF_INET,SOCK_DGRAM,0); \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/create a UDP socket socket_bind($s,&#8217;0.0.0.0&#8242;,5555); \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\/\/bind on all interfaces on port &hellip; <a href=\"https:\/\/www.cs.ubbcluj.ro\/~radu.dragos\/examples\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Examples&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/www.cs.ubbcluj.ro\/~radu.dragos\/wp-json\/wp\/v2\/pages\/736"}],"collection":[{"href":"https:\/\/www.cs.ubbcluj.ro\/~radu.dragos\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.cs.ubbcluj.ro\/~radu.dragos\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.cs.ubbcluj.ro\/~radu.dragos\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cs.ubbcluj.ro\/~radu.dragos\/wp-json\/wp\/v2\/comments?post=736"}],"version-history":[{"count":29,"href":"https:\/\/www.cs.ubbcluj.ro\/~radu.dragos\/wp-json\/wp\/v2\/pages\/736\/revisions"}],"predecessor-version":[{"id":928,"href":"https:\/\/www.cs.ubbcluj.ro\/~radu.dragos\/wp-json\/wp\/v2\/pages\/736\/revisions\/928"}],"wp:attachment":[{"href":"https:\/\/www.cs.ubbcluj.ro\/~radu.dragos\/wp-json\/wp\/v2\/media?parent=736"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}