Examples

Socket Programming

VIDEOS:
Sockets Explained
UDP in Php
UDP in Assembly Language (Linux x64)
UDP in C (3 lines of code)

UDP

UDP server in PHP

<?php
  $s=socket_create(AF_INET,SOCK_DGRAM,0);                  //create a UDP socket
  socket_bind($s,'0.0.0.0',5555);                          //bind on all interfaces on port 5555
  socket_recvfrom($s,$b,10,0,$client_ip,$client_port);     //read max 10 bytes from socket $s into buffer $b
  echo "Received: ".$b." from IP=".$client_ip.":".$client_port;
  socket_sendto($s,"hello",5,0,$client_ip,$client_port);   //send a message back to the client
  ?>

UDP client in PHP

<?php
$s=socket_create(AF_INET,SOCK_DGRAM,0);            //create a UDP socket
socket_sendto($s,"hey",3,0,"127.0.0.1",5555);      //send 3 bytes to the server
socket_recvfrom($s,$b,10,0,$serv_ip,$serv_port);   //read max 10 bytes from socket $s into buffer $b
echo "Received: ".$b." from IP=".$serv_ip.":".$serv_port;
?>

UDP server in Python 2

import socket
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)  
s.bind(("0.0.0.0",5555))                           
buff,addr=s.recvfrom(10)                           
print buff
s.sendto("hello", addr)                        

UDP client in Python 2

import socket
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

s.sendto("hey",("127.0.0.1",5555))                 
print s.recvfrom(10)                     

UDP client in Python 3

import socket
s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
msg="hey"
s.sendto(str.encode(msg),("127.0.0.1",5555))
msg,adr=s.recvfrom(10)
print (msg.decode())

UDP server in C

#include <netinet/ip.h>
char buf[8] = "xxxxxxxx";
int sfd,r;
struct sockaddr_in soc,csoc;
main (){
  int clen=sizeof(struct sockaddr_in);
  sfd = socket (AF_INET, SOCK_DGRAM, 0);
  
  soc.sin_family=AF_INET;
  soc.sin_port=htons(7777);
  soc.sin_addr.s_addr=inet_addr("0.0.0.0");
  
  bind(sfd,&soc,sizeof(struct sockaddr_in));
r=recvfrom (sfd,buf,100,0,&csoc,&clen);
buf[r]=0;
printf(" %d %s\n",strlen(buf),buf);
} 

UDP client in C


#include <netinet/ip.h>
char buf[8] = "hello";
int sfd;
struct sockaddr_in soc;
main (){
  sfd=socket(AF_INET, SOCK_DGRAM, 0);
  
  soc.sin_family=AF_INET;
  soc.sin_port=htons(7777);
  soc.sin_addr.s_addr=inet_addr("127.0.0.1");
 
  sendto (sfd,buf,strlen(buf),0,&soc,sizeof(struct sockaddr_in));
}
 
} 

UDP client in Java

import java.io.*;
import java.net.*;

class c
{
   public static void main(String args[]) throws Exception
   {
      DatagramSocket clientSocket = new DatagramSocket();
      InetAddress IPAddress = InetAddress.getByName("localhost");
      byte buf[] = new byte[5];
      String s="12345";
      buf=s.getBytes();
      DatagramPacket sendPacket = new DatagramPacket(buf, 5, IPAddress, 5555);
      clientSocket.send(sendPacket);
   }
}

 

TCP

TCP server in PHP

<?php
$s=socket_create(AF_INET,SOCK_STREAM,0);
socket_bind($s,"0.0.0.0",9999);
socket_listen($s);
$cs=socket_accept($s);
socket_send($cs,"Hello",5,0);
?>

TCP client in PHP

<?php
$s=socket_create(AF_INET,SOCK_STREAM,0);
socket_connect($s,"127.0.0.1",9999);
socket_recv($s,$buf,20,0);
echo $buf."\n";
?>

TCP server in Python 2

import socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(("0.0.0.0",7777))
s.listen(5)
cs,addr=s.accept()
b=cs.recv(10)
print b
cs.send("Hello")
cs.close()

TCP client in Python 2

import socket
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("127.0.0.1",7777))
s.send("Salut")
print s.recv(10)
s.close()

TCP multithreaded server in Python

import time
import socket
from threading import Thread
def f(cs,i):
 print ("Procesez client"+str(i))
 b=cs.recv(10)
 time.sleep(10)
 cs.send(str(i))
 cs.close()
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(("0.0.0.0",7777))
s.listen(5)
i=0
while (1==1):
 i=i+1
 cs,addr=s.accept()
 t=Thread(target=f,args=(cs,i,))
 t.start()

Python Multiplexed Chat Server – using select

import select, socket
s= socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setblocking(0)
s.bind(('0.0.0.0', 5555))
s.listen(5)

ins = [s]
outs = []
msg=[]
while ins:
    r,w,e = select.select(ins,outs,ins)
    for ss in r:
        if ss==s:
            cs,addr=ss.accept()
            print "Client from:",addr
            ins.append(cs)
        else:
             print "Data from client"
             data=ss.recv(100)
             if data:
                txt=ss.getpeername()[0]+":"+str(ss.getpeername()[1])+":"+data
                print txt
                msg.append(txt)
                if ss not in outs:
                    outs.append(ss)
             else :
                print "Null data, client is gone"
                ins.remove(ss)
                if ss in outs:
                    outs.remove(ss)
                ss.close()
    for ss in e:
        print "Error"
        ins.remove (ss)
        if ss in outs:
          outs.remove(ss)
        ss.close()
    for ss in w:
        for i in msg:
            ss.send(i)
    msg=[]

Python client for the Multiplexed Chat Server

import socket,os
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("127.0.0.1",5555))
s.send("Hello")
if os.fork()==0:
  while 1:
   print s.recv(100)
  exit(0)
while 1:
  s.send(raw_input())
s.close()