ip = ""
port = 0
- BUFFER_SIZE = 4096
DEBUG = True
processes = {} # keeps lists of file descriptors for each process
# 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
elif msg[0] == GET_CLIENTS:
pass
elif msg[0] == GET_OUTPUT:
-
+ #f = open(SESSIONS_FILE, )
pass
else:
+++ /dev/null
-#!/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()
-