Skip to main content
Socket Programming using python

Data Transport 
   
 There are two basic types of communications:
  • Stream(TCP):   Computers establish a connection with each other and read/write data in a continuous stream bytes like a file.This is the most common. It is also provide reliable ,oriented connection service, control(flow and congestion).                                                                                                   
  • Datagrams(UDP):  Userdatagram protocol, Computer send discrete packets to each other.Each packet contains a collection of bytes,but each packet is separate and self-contained. It is faster than TCP.
 SOCKETS
                       
             Combination of IP address and port number, a communication endpoint.
                 
 Socket Basic using python 

To create a socket :  
                 import socket    
                 s=socket.socket(address_family,type)  
  • Address families  : 
       socket.AF_INET         Internet protocol (IPv4)         
       socket.AF_INET6       Internet protocol (IPv6)                                                                                                                                                                               
  • Types: 
        for  TCP connection   
        s=socket(AF_INET, SOCK_STREAM)    

          for UDP connection        
          s=socket(AF_INET, SOCK_DGRAM)                                                                                                    
  • Server :  
                           Listen for incoming connection and process the request                                                             
  • Client:    
                           Make an outgoing connection, give the request to server                                                             
  TCP  Server python code  
#server_tcp.py

import os
from socket import *
host = ""
port = 13000
buf = 2048     #amount of data to receive
addr = (host, port)
T = socket(AF_INET, SOCK_STREAM)
T.bind(addr)
T.listen(1)

while True:
    print "waiting for connection"
    c,c_a=T.accept()
    print "a request  from \n: " ,c_a
    while True:
       
       data1=c.recv(buf)
       print "receiving request message:\n",data1
       if data1=="exit":
         break;
    c.close()
                                            
                                                             download file server_tcp.py 


 TCP Client python code 
#client_tcp.py
                                     
import os
from socket import *
host = "127.0.0.1"
port = 13000
addr = (host, port)
T = socket(AF_INET, SOCK_STREAM)
print" connecting to server"
T.connect(addr)

while (1):
       data=raw_input("send a request to server or type exit\n")
       T.sendall(data)
       if data=="exit":
          break;
os._exit(0)
    
                                        download  file client_tcp.py

 UDP  Server Python Code          
#server_udp.py

import os
from socket import *
host = ""
port = 13000
buf = 1024
addr = (host, port)
UDPSock = socket(AF_INET, SOCK_DGRAM)
UDPSock.bind(addr)
print "Waiting to receive messages..."

while True:
    (data, addr) = UDPSock.recvfrom(buf)
    print "A request from ip: \t" + addr[0] 
   
    print "Received message: " + data
    if data == "exit":
        break
UDPSock.close()
os._exit()
                 
                                    download  file server_udp.py

                                                     UDP client python code
#client_udp.py

import os
from socket import *
host = "127.0.0.1"                     # set to IP address of target computer 
port = 13000
addr = (host, port)
UDPSock = socket(AF_INET, SOCK_DGRAM)
while True:
    data = raw_input("send request to the server or type 'exit': ")
    UDPSock.sendto(data, addr)
    (data1, addr) = UDPSock.recvfrom(buf)
    
    if data == "exit":
        break
   
UDPSock.close()
os._exit(0)

                                   download  file client_udp.py


Comments

Popular posts from this blog

YACC Program to check whether the arithmetic expression is valid or not

validexp.l //LEX Program /* declaration section in this sections we will declare the different value and include the header file which we are using in this program to run this program */ %{ #include"y.tab.h" extern yylval; %} /* defined section */ %% [0-9]+ {yylval=atoi(yytext); return NUMBER;}    //this is send to the yacc code as token INTEGER [a-zA-Z]+ {return ID;}                                          //this is send to the yacc code as token  ID [\t]+ ; \n {return 0;} . {return yytext[0];} %%    validexp.y  //yacc program //decelration section %{ #include<stdio.h> %} //definition section %token NUMBER ID                        // token from lex file %left '+' '-'                    ...

LEX to count the no of "scanf" and "printf" statement in a c program. Replace them with "writf" and "readf" respectively.

/* declaration section in this sections we will declare the different value and include the header file which we are using in this program to run this program */ %{ #include<stdio.h> int sf=0,pf=0; %} /* defined section */ %% "scanf" { sf++; fprintf(yyout,"readf");}            // replace scanf  with readf "printf" { pf++; fprintf(yyout,"writef");}            // replace printf  with writef %% int main() { yyin=fopen("open.c","r");                            // input file open.c yyout=fopen("new.c","w");                            // output file new.c with replace  yylex();      //no of printf and scanf in the file printf("Number of scanfs=%d\nNumber of Printf's=%d\n",sf,pf); return 0; } download the file  ...

lex program to count the number of Positive and negative integer

/* decleration section in this sections we will decleared the different  value and include the header file which we are using in this program to run this program */ %{ #include<stdio.h> int p_count=0; int n_count=0; %} /* this sections is known as defined section in which we defined the rule and regulation of regular expression which will going to accept or not */ %% [+]?([0-9])+  { /* this is for increment and print the positive integer eg: 96, +36 */ p_count++; printf("Positive Integer:%s\n",yytext);} [-]([0-9])+   { /* this is for increment and print the negative integer eg: -96, -36 */ n_count++; printf("negative Integer:%s\n",yytext);} %% /* main function for calling the function */ void main(int argc[],char *argv[]) { yylex(); printf("the total number of Postive Integer are: %d\n" ,p_count); printf("the total number of Negative  Integer are:%d\n",n_count); }                ...