autorun: socket recv big size data
authorAdriana Draghici <adriana008@gmail.com>
Fri, 16 Apr 2010 08:58:02 +0000 (08:58 +0000)
committerAdriana Draghici <adriana008@gmail.com>
Fri, 16 Apr 2010 08:58:02 +0000 (08:58 +0000)
autorun/Util.py
autorun/server/Client.py
autorun/server/Server.py
autorun/server/Server_NO_DAEMON.py [deleted file]

index f77053a..1108b7e 100644 (file)
@@ -7,6 +7,7 @@ SERVER_PORT = 10004
 SERVER_HOST = "127.0.0.1"
 
 SESSIONS_FILE = "/home/p2p/sessions.txt" # TO CHANGE 
+BUFFER_SIZE = 4096
 
 """ Message types: client -> server """
 
index 0e08616..0ec782e 100644 (file)
@@ -1,7 +1,6 @@
 import sys,time, socket
 import pickle
 from Util import *
-MSGLEN = 1024
 DEBUG = True
 class MySocket:
     def __init__(self, sock=None):
@@ -39,7 +38,7 @@ class MySocket:
 
     def recv_msg(self):
         msg = ''
-        chunk = self.sock.recv(MSGLEN)
+        chunk = self.sock.recv(BUFFER_SIZE)
         if chunk == '':
             raise RuntimeError,        "socket connection broken"
         msg = msg + chunk
@@ -49,8 +48,10 @@ class MySocket:
         #      while chunk:            
         #              chunk = clientsock.recv(BUFFER_SIZE)
         #              data += chunk
+        print "astept sa primesc ceva de la server"
         data = self.recv_msg()
         dd = pickle.loads(data)        
+        print "am primit ", dd
         return dd
 
     # send a pickled dictionary
index 296e456..31378e2 100644 (file)
@@ -16,7 +16,6 @@ class MyDaemon(Daemon):
 
     ip = ""
     port = 0
-    BUFFER_SIZE = 4096
     DEBUG = True
 
     processes = {} # keeps lists of file descriptors for each process
@@ -41,9 +40,22 @@ class MyDaemon(Daemon):
         #      while chunk:            
         #              chunk = clientsock.recv(self.BUFFER_SIZE)
         #              data += chunk
-        data = clientsock.recv(self.BUFFER_SIZE)
-        dd = pickle.loads(data)        
+
+        msg = ''
+        while 1:
+            chunk = clientsock.recv(BUFFER_SIZE)
+            if not chunk:
+                break
+                #raise RuntimeError, "socket connection broken"
+
+            msg = msg + chunk
+            if len(chunk) < BUFFER_SIZE:
+                break
+        
+        dd = pickle.loads(msg) 
+        #print "am primit mesajul: ", dd
         return dd
+
     def send_pickled_data (self, clientsock, data):
             dumped_data = pickle.dumps(data)   
             totalsent = 0
@@ -163,7 +175,7 @@ class MyDaemon(Daemon):
             elif msg[0] == GET_CLIENTS:
                 pass
             elif msg[0] == GET_OUTPUT:
-
+                #f = open(SESSIONS_FILE, )
                 pass
 
             else:
diff --git a/autorun/server/Server_NO_DAEMON.py b/autorun/server/Server_NO_DAEMON.py
deleted file mode 100644 (file)
index fde9001..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-#!/usr/bin/env python
-
-import sys, os, socket 
-import pickle
-import signal
-from daemon import Daemon
-from Util import *
-from Util import SERVER_HOST, SERVER_PORT
-from BitTorrentClientRun import *
-from TransmissionRun import *
-from TriblerRun import *
-BUFFER_SIZE = 4096
-
-processes = {}
-
-DEBUG = True
-
-def recv_pickled_data(clientsock):
-    #  while chunk:            
-    #          chunk = clientsock.recv(BUFFER_SIZE)
-    #          data += chunk
-    data = clientsock.recv(BUFFER_SIZE)
-    dd = pickle.loads(data)    
-    return dd
-
-def send_pickled_data (clientsock, data):
-        dumped_data = pickle.dumps(data)       
-        totalsent = 0
-        while totalsent < len(dumped_data):
-            sent = clientsock.send(dumped_data[totalsent:])
-            if sent == 0:
-                raise RuntimeError,    "socket connection broken"
-            totalsent = totalsent + sent
-
-def start_bt_client(bt_client_data):
-
-    btcr = None
-
-    if bt_client_data[CLIENT] == TRANSMISSION:
-        #btcr = TransmissionRun("/usr/bin/transmissioncli")
-        btcr = TransmissionRun(bt_client_data[BASE_DIR])
-    elif bt_client_data[CLIENT] == TRIBLER:
-        btcr = TriblerRun(bt_client_data[BASE_DIR])
-       # btcr = TriblerRun("/home/p2p/p2p-clients/tribler")
-    
-    else:
-        return -1
-    
-    btcr.config_run(bt_client_data[DL_DIR], bt_client_data[LOG_DIR], 
-         bt_client_data[OUT_FILE], bt_client_data[LOG_DIR],
-         bt_client_data[LOG_FILE], bt_client_data[PORT], 
-         bt_client_data[TORRENT])
-
-    btcr.start()
-    [pid, log_fd, output_fd] = btcr.run_client(btcr.simple_run_command)
-    processes[pid] = (log_fd, output_fd)
-    print processes[pid]
-    if(DEBUG):
-        print "Server: started client with pid = ", pid
-    return pid
-
-    """Simple test 
-
-    btcr = TransmissionRun("/usr/bin/transmissioncli")
-    btcr.config_run("/home/adriana/p2p/p2p-dld/transmission", 
-                    "/home/adriana/p2p/p2p-log/transmission", 
-                    "scrubs.out", "/home/adriana/p2p/", 
-                    "transmission-scrubs.log", 10150, 
-                    "/home/adriana/p2p/p2p-meta/scrubs.torrent")
-    
-    btcr.start()
-    btcr.run_client(btcr.simple_run_command)
-    """
-
-def stop_bt_client(pid):
-    
-    int_pid = int(pid)
-    os.kill(int_pid, signal.SIGKILL) # kill generates zombies
-    os.wait()
-    processes[int_pid][0].close() 
-    processes[int_pid][1].close()
-    del processes[int_pid] 
-    if(DEBUG):
-        print "Server: killed process with pid = ", pid
-
-def doServer():
-
-    serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-    if(DEBUG):
-        print "Server: host ip = %s, port = %d"%(SERVER_HOST,SERVER_PORT)
-    serversocket.bind((SERVER_HOST, SERVER_PORT));
-    serversocket.listen(10) #max 10 requests
-    clientsocks = []
-    while(1):
-        if(DEBUG):
-            print "Server: accepting connections"
-        (clientsock, address) = serversocket.accept();
-        if(DEBUG):
-            print "Server: accepted connection from ", address
-        
-        msg = recv_pickled_data(clientsock)
-        if(DEBUG):
-            print "Server: received message:\n", msg
-        
-
-        if msg[0] == START_MSG:
-            bt_client_data = msg[1]
-            client_pid = start_bt_client(bt_client_data)
-            send_pickled_data(clientsock, (ACK_MSG, client_pid))
-
-        elif msg[0] == STOP_MSG:
-            client_pid = msg[1]
-            if(DEBUG):
-                print "Server: received message:\n", msg
-            stop_bt_client(client_pid)
-            send_pickled_data(clientsock, (ACK_MSG,""))
-        
-        else:
-
-            send_pickled_data(clientsock,( ERROR_MSG,"Error: wrong message type "))
-
-        # clientsock.recv(BUFFER_SIZE)
-        # recv_pickled_data(clientsock)
-        clientsock.close()
-
-if __name__ == "__main__":
-       doServer()      
-