title: Send image using socket programming Python
body: <p>I am trying to send an image file using socket programming in python. I am able to send a text file. But I have been trying to send an image file, by opening it and reading the contents of the image file in a string and then sending the string and receiving it on the client side and then writing it to a file with the same name in a different directory, but I am unable to open the file. Also I am posting my code below, the commented parts are an indication that I have already tried it. Also I am having problems sending the integer <code>size</code> but I am receiving some random string on the other side.</p>
  
  <p>This is the Server script</p>
  
  <pre><code>import socket
  server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  server_socket.bind(("", 5000))
  server_socket.listen(5)
  import os
  
  
  client_socket, address = server_socket.accept()
  print "Conencted to - ",address,"\n"
  while (1):
      choice = client_socket.recv(1024)
      choice = int(choice)
      if(choice == 1):
          data = client_socket.recv(1024)
          print "The following data was received - ",data
          print "Opening file - ",data
          fp = open(data,'r')
          strng = fp.read()
          size = os.path.getsize(data)
          size = str(size)
          client_socket.send(size)
          client_socket.send (strng)
          #client_socket.close()
  
      if (choice == 2):
          data = client_socket.recv(1024)
          print "The following data was received - ",data
          print "Opening file - ",data
          fp = open(data,'r')
          strng = fp.read()
          #strng = str(fp)
          size = os.path.getsize(data)
          print size
          size = str(size)
          print size
          client_socket.send(size)
          client_socket.send (strng)
          #client_socket.close()
  </code></pre>
  
  <p>And this is the client side script -</p>
  
  <pre><code>#!/usr/bin/python
  # TCP client example
  import socket,os
  client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  client_socket.connect(("", 5000))
  k = ' '
  size = 1024
  
  while(1):
      print "Do you want to transfer a \n1.Text File\n2.Image\n3.Video\n"
      k = raw_input()
      client_socket.send(k)
      k = int (k)
      if(k == 1):
          print "Enter file name\n"
          strng = raw_input()
          client_socket.send(strng)
          size = client_socket.recv(1024)
          size = int(size)
          print "The file size is - ",size," bytes"
          size = size*2
          strng = client_socket.recv(size)
          print "\nThe contents of that file - "
          print strng
  
      if (k==2):
          print "Enter file name of the image with extentsion (example: filename.jpg,filename.png) - "
          fname = raw_input()
          client_socket.send(fname)
          size = client_socket.recv(1)
          print size
          #size = int(size)
          print "The file size is - ",size
          size = size*2
          strng = client_socket.recv(256456)
          print "\nThe file will be saved and opened- "
          fname = 'downloads/'+fname
          nf = open(fname,'w')
          nf.write(strng)
          nf.close()
          fname = 'viewnior '+ fname
          print fname
          os.system(fname)
  </code></pre>
  
  <p>I am programming on Crunchbang Linux - Unofficial Debian based Distro
  viewnior is the image viewer.</p>