当前位置: 首页>>代码示例>>Python>>正文


Python Function.create_socket_client方法代码示例

本文整理汇总了Python中Function.create_socket_client方法的典型用法代码示例。如果您正苦于以下问题:Python Function.create_socket_client方法的具体用法?Python Function.create_socket_client怎么用?Python Function.create_socket_client使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Function的用法示例。


在下文中一共展示了Function.create_socket_client方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: logout

# 需要导入模块: import Function [as 别名]
# 或者: from Function import create_socket_client [as 别名]
def logout(ip, sessionID, SN, SN_host):
	print ("\n>>> LOGOUT")
	pk = pack.request_logout(sessionID)
	s = func.create_socket_client(func.roll_the_dice(SN_host[0]), SN_host[1]);
	if s is None:
		func.error("Errore nel logout dal super nodo, vabbè")
	else:
		s.sendall(pk)
		ricevutoByte = s.recv(const.LENGTH_PACK)
		nDelete = ricevutoByte[4:]
		func.success("Logout eseguito con successo dal super nodo, eliminati " + str(nDelete, "ascii") + " elementi")
		s.close()

	pk = pack.close()
	s = func.create_socket_client(func.roll_the_dice(ip), const.PORT);
	if s is None:
		func.error("Errore nella chiusura del demone")
	else:
		s.sendall(pk)
		s.close()
		print ("Chiusura del peer eseguito con successo, arrivederci.\n\n")

	if SN:
		s = func.create_socket_client(func.roll_the_dice(ip), const.PORT_SN);
		if s is None:
			func.error("Errore nella chiusura del demone super nodo")
		else:
			s.sendall(pk)
			s.close()
			print ("Chiusura del supernodo eseguita con successo, arrivederci.\n\n")
开发者ID:tommasoberlose,项目名称:p2p_kazaa,代码行数:32,代码来源:Peer.py

示例2: search

# 需要导入模块: import Function [as 别名]
# 或者: from Function import create_socket_client [as 别名]
def search(sessionID, query, SN, SN_host, host, listPkt):
	ricevutoByteRam = b''
	ricevutoByte = b''
	pk = pack.request_search(sessionID, query)
	s = func.create_socket_client(func.roll_the_dice(SN_host[0]), SN_host[1]);
	if s is None:
		func.error("Super nodo non attivo.")
		update_network(host, SN, listPkt)
	else:
		s.sendall(pk)

		ricevutoByte = s.recv(4 * const.LENGTH_PACK)

		if str(ricevutoByte[0:4],"ascii") == const.CODE_ANSWER_SEARCH:
			print(ricevutoByte)
			nIdmd5 = int(ricevutoByte[4:7])
			if(nIdmd5 != 0):
				func.success("Ricerca completata.")
				pointer = 7
				id = 0
				listFile = []
				for j in range(0, nIdmd5):
					md5 = ricevutoByte[pointer:pointer + 32]
					nomeFile = ricevutoByte[pointer + 32:pointer + 132]
					nCopy = int(ricevutoByte[pointer + 132:pointer + 135])

					pointer = pointer + 135

					for i in range(0, nCopy):
						ip = ricevutoByte[pointer:pointer + 55]
						port = ricevutoByte[pointer + 55:pointer + 60]
						id = id + 1
						pointer = pointer + 60
						fixList = [id, md5, nomeFile, ip, port]
						listFile.append(fixList)
						
				print("\nScegli file da quelli disponibili (0 per uscire): \n")
				print("FILE    \t\tID\tIP\n")
				lastFileName = b''
				for row in listFile:
					if lastFileName != row[2]:
						nomeFile = func.reverse_format_string((str(row[2], "ascii").strip() + ":"), const.LENGTH_FORMAT, " ")
						print(nomeFile + str(row[0]) + "\t" + str(row[3], "ascii"))
					else:
						print("\t\t\t" + str(row[0]) + "\t" + str(row[3], "ascii"))
					lastFileName = row[2]
				
				selectId = input("\nInserire il numero di file che vuoi scaricare (0 per uscire): ")
				
				if(selectId != "0"):
					for i in range (0, id):
						if listFile[i][0] == int(selectId):
							selectFile = listFile[i]
							break

					func.download(selectFile)

			else:
				func.error("Non sono presenti file con questa query nel nome: " + query)
		s.close()
开发者ID:tommasoberlose,项目名称:p2p_kazaa,代码行数:62,代码来源:Peer.py

示例3: forward

# 需要导入模块: import Function [as 别名]
# 或者: from Function import create_socket_client [as 别名]
def forward(pk, addr, l): # Non andrebbe fatto generico?
	if pk != bytes(const.ERROR_PKT, "ascii"):
		for x in l:
			if addr != x[0]:
				s = func.create_socket_client(func.roll_the_dice(x[0]), x[1])
				if not(s is None):
					s.sendall(pk)
					#write_daemon_success("Daemon", "-", "Forward da " + addr + " a " + x[0])
					s.close()
开发者ID:tommasoberlose,项目名称:p2p_kazaa,代码行数:11,代码来源:Function.py

示例4: forward

# 需要导入模块: import Function [as 别名]
# 或者: from Function import create_socket_client [as 别名]
def forward(pk, addr, listNeighbor):
	if pk != bytes(const.ERROR_PKT, "ascii"):
		if not [pk[20:75], pk[75:80]] in listNeighbor:
			for x in listNeighbor:
				if addr != x[0]:
					s = func.create_socket_client(func.roll_the_dice(x[0]), x[1])
					if not(s is None):
						s.sendall(pk)
						s.close()
开发者ID:tommasoberlose,项目名称:p2p_gnutella,代码行数:11,代码来源:Function.py

示例5: logout

# 需要导入模块: import Function [as 别名]
# 或者: from Function import create_socket_client [as 别名]
def logout(ip):
	print ("\n>>> LOGOUT")
	i = 0
	pk = pack.logout()
	s = func.create_socket_client(func.get_ipv4(ip), const.PORT);
	if s is None:
		func.error("Errore nella chiusura del demone:" + func.get_ipv4(ip))
	else:
		s.sendall(pk)
		s.close()
		i = i + 1
	s = func.create_socket_client(func.get_ipv6(ip), const.PORT);
	if s is None:
		func.error("Errore nella chiusura del demone:" + func.get_ipv6(ip))
	else:
		s.sendall(pk)
		s.close()
		i = i + 1
	if i is 2:
		print ("Logout eseguito con successo.")
开发者ID:tommasoberlose,项目名称:p2p_gnutella,代码行数:22,代码来源:Peer.py

示例6: login

# 需要导入模块: import Function [as 别名]
# 或者: from Function import create_socket_client [as 别名]
def login(host, SN, SN_host, listPkt):
	s = func.create_socket_client(func.roll_the_dice(SN_host[0]), SN_host[1])
	pk = pack.request_login(host)
	if s is None:
		func.error("Errore nell'apertura della socket per il login")
		update_network(host, SN, listPkt)
	else:
		s.sendall(pk)
		ricevutoByte = s.recv(const.LENGTH_PACK)
		sessionID = ricevutoByte[4:20]
		s.close()
		return sessionID
开发者ID:tommasoberlose,项目名称:p2p_kazaa,代码行数:14,代码来源:Peer.py

示例7: updateNeighbor

# 需要导入模块: import Function [as 别名]
# 或者: from Function import create_socket_client [as 别名]
def updateNeighbor(myHost, listNeighbor):
	del listNeighbor[:]
	pk = pack.neighbor(myHost)
	# Se avevo già dei vicini vado a testare se sono ancora attivi
	"""if len(listNeighbor) != 0:
		for neighbor in listNeighbor:
			s = func.create_socket_client(func.roll_the_dice(neighbor[0]), neighbor[1]);
			# Se non sono più attivi lo segnalo e li cancello dalla lista
			if s is None:
				func.error(str(neighbor[0], "ascii") + " non è più attivo.")
				del neighbor
			else:
				func.success(str(neighbor[0], "ascii") + " ancora attivo.")
				s.close()
		# Se prima ero al completo e sono ancora tutti attivi lo segnalo e esco
		if len(listNeighbor) == const.NUM_NEIGHBOR:
			func.success("Lista vicini completa!")
		# Se invece dopo il controllo ho meno vicini del numero massimo mando a ogni vicino una richiesta di vicinato
		elif len(listNeighbor) > 0:
			for neighbor in listNeighbor:
				s = func.create_socket_client(func.roll_the_dice(neighbor[0]), neighbor[1]);
				if s is None:
					func.error("Mamma che sfiga, sto vicino è andato giù proprio ora.")
				else:
					s.sendall(pk)
					s.close()	
	
	# Alla fine gestisco la possibilità che tutti i vicini che avevo siano andati giù e quindi passo all'inserimento manuale.
	if len(listNeighbor) == 0: 		"""
	while True:
		print ("\n>>> SCELTA PEER VICINO")
		nGroup = input("Numero del gruppo: ")
		if nGroup is 0:
			break
		nElement = input("Numero dell'elemento del gruppo: ")
		if nElement is 0:
			break
		nPort = input("Inserire la porta su cui il vicino è in ascolto: ")
		if nPort is 0:
			break
		hostN = func.roll_the_dice("172.030." + func.format_string(nGroup, const.LENGTH_SECTION_IPV4, "0") + 
																"." + func.format_string(nElement, const.LENGTH_SECTION_IPV4, "0") + 
																"|fc00:0000:0000:0000:0000:0000:" + func.format_string(nGroup, const.LENGTH_SECTION_IPV6, "0") + 
																":" + func.format_string(nElement, const.LENGTH_SECTION_IPV6, "0"))
		s = func.create_socket_client(hostN, nPort);
		if s is None:
			func.error("Errore nella scelta del primo peer vicino, scegline un altro.")
			break
		else:
			s.sendall(pk)
			s.close()
			break
开发者ID:tommasoberlose,项目名称:p2p_gnutella,代码行数:54,代码来源:Peer.py

示例8: remove_file

# 需要导入模块: import Function [as 别名]
# 或者: from Function import create_socket_client [as 别名]
def remove_file(fileName, sessionID, SN, SN_host, host, listPkt):
	if os.path.exists("FileCondivisi/" + fileName):
		md5File = hashlib.md5(open(("FileCondivisi/" + fileName),'rb').read()).hexdigest()
		pk = pack.request_remove_file(sessionID, md5File)
		s = func.create_socket_client(func.roll_the_dice(SN_host[0]), SN_host[1]);
		if s is None:
			func.error("Errore, super nodo non attivo.")
			update_network(host, SN, listPkt)
		else:
			s.sendall(pk)
			s.close()
	else:
		func.error("Errore: file non esistente.")
开发者ID:tommasoberlose,项目名称:p2p_kazaa,代码行数:15,代码来源:Peer.py

示例9: download

# 需要导入模块: import Function [as 别名]
# 或者: from Function import create_socket_client [as 别名]
def download(selectFile):	
	print ("\n>>> DOWNLOAD")

	md5 = selectFile[1]
	nomeFile = selectFile[2].decode("ascii").strip()
	ip = selectFile[3]
	port = selectFile[4]

	# Con probabilità 0.5 invio su IPv4, else IPv6
	ip = func.roll_the_dice(ip.decode("ascii"))
	print("Connessione con:", ip)

	# Mi connetto al peer

	sP = func.create_socket_client(ip, port)
	if sP is None:
	    print ('Error: could not open socket in download')
	else:
		pk = pack.request_download(md5)
		sP.sendall(pk)

		nChunk = int(sP.recv(const.LENGTH_HEADER)[4:10])
					
		ricevutoByte = b''

		i = 0
		
		while i != nChunk:
			ricevutoLen = sP.recv(const.LENGTH_NCHUNK)
			while (len(ricevutoLen) < const.LENGTH_NCHUNK):
				ricevutoLen = ricevutoLen + sP.recv(const.LENGTH_NCHUNK - len(ricevutoLen))
			buff = sP.recv(int(ricevutoLen))
			while(len(buff) < int(ricevutoLen)):
				buff = buff + sP.recv(int(ricevutoLen) - len(buff))
			ricevutoByte = ricevutoByte + buff
			i = i + 1

		sP.close()
		
		# Salvare il file data
		open((const.FILE_COND + nomeFile),'wb').write(ricevutoByte)
		print("File scaricato correttamente, apertura in corso...")
		try:
			os.system("open " + const.FILE_COND + nomeFile)
		except:
			try:
				os.system("start " + const.FILE_COND + nomeFile)
			except:
				print("Apertura non riuscita")
开发者ID:tommasoberlose,项目名称:p2p_kazaa,代码行数:51,代码来源:Function.py

示例10: update_network

# 需要导入模块: import Function [as 别名]
# 或者: from Function import create_socket_client [as 别名]
def update_network(host, SN, listPkt):
	func.warning("\nP2P >> CREATION NETWORK")

	while True:
		nGroup = input("Inserire il numero del gruppo: ")
		nElement = input("Inserire il numero dell'elemento del gruppo: ")
		nPort = input("Inserire il numero della porta: ")
		Fhost = [("172.030." + func.format_string(nGroup, const.LENGTH_SECTION_IPV4, "0") + 
					"." + func.format_string(nElement, const.LENGTH_SECTION_IPV4, "0") + 
					"|fc00:0000:0000:0000:0000:0000:" + func.format_string(nGroup, const.LENGTH_SECTION_IPV6, "0") + 
					":" + func.format_string(nElement, const.LENGTH_SECTION_IPV6, "0")), nPort]


		if SN:
			pk = pack.request_sn(host, const.PORT_SN)
			func.add_pktid(pk[4:20], listPkt, const.PORT_SN)
		else:
			pk = pack.request_sn(host, const.PORT)
			func.add_pktid(pk[4:20], listPkt, const.PORT)

		s = func.create_socket_client(func.roll_the_dice(Fhost[0]), Fhost[1]);
		if s is None:
			func.error("Errore nella scelta del primo nodo vicino, scegline un altro.")
		else:
			s.sendall(pk)
			s.close()
			break

	# Caricamento
	print("Loading...")

	for i in range(0, int(const.MAX_TIME / 1000)):
		print("|", end = "")
		print("|||" * i + " " * ((int(const.MAX_TIME / 1000) * 3) - (i * 3)) + "|")
		time.sleep(1)

	print("|" + "|||" * int(const.MAX_TIME / 1000) + "|")

	if SN:
		func.success("NETWORK CREATED:")
		for h in sn_network:
			func.gtext(h[0] + " - " + h[1])

	if SN:
		SN_host = [host, const.PORT_SN]
	else:
		SN_host = func.choose_SN(sn_network)

	return SN_host
开发者ID:tommasoberlose,项目名称:p2p_kazaa,代码行数:51,代码来源:Peer.py

示例11: search

# 需要导入模块: import Function [as 别名]
# 或者: from Function import create_socket_client [as 别名]
def search(myHost, query, listNeighbor, listPkt):
	pk = pack.query(myHost, query)
	if len(listNeighbor) is 0:
		func.error("Nessun vicino presente, crea prima una rete virtuale")
	else:
		func.add_pktid(pk[4:20], listPkt)
		i = 0
		for x in listNeighbor:
			s = func.create_socket_client(func.roll_the_dice(x[0]), x[1]);
			if s is None:
				func.error("Peer non attivo: " + str(x[0], "ascii"))
			else:
				func.success("Peer attivo: " + str(x[0], "ascii"))
				s.sendall(pk)
				s.close()
				i = i + 1
		if i is 0:
			func.error("Nessun peer vicino attivo")
		else:
			print("\nScegli file da quelli disponibili (0 per uscire): \n")
			print("ID\tFILE\t\tIP\n")
			f = False
			while not f:
				try:
					print("\n")
					choose = int(input())
					if choose != 0:
						if choose <= len(listResultQuery):
							f = True
							func.remove_pktid(pk, listPkt)
							download(listResultQuery[choose - 1])
							del listResultQuery[:]
						else: 
							func.error("Spiacente, numero inserito non valido.")
					else:
						break
				except ValueError:
					func.error("Spiacente, inserisci un numero.")

			func.remove_pktid(pk, listPkt)
			del listResultQuery[:]
开发者ID:tommasoberlose,项目名称:p2p_gnutella,代码行数:43,代码来源:Peer.py

示例12: run

# 需要导入模块: import Function [as 别名]
# 或者: from Function import create_socket_client [as 别名]
	def run(self):
		# Creazione socket
		s = func.create_socket_server(func.roll_the_dice(self.host), self.port)

		if s is None:
			func.write_daemon_text(self.name, self.host, 'Error: Daemon could not open socket in upload.')

		else:
			while 1:

				conn, addr = s.accept()
				ricevutoByte = conn.recv(const.LENGTH_PACK)
				#print("\n")
				#func.write_daemon_text(self.name, addr[0], str(ricevutoByte, "ascii"))


				if not ricevutoByte:
					func.write_daemon_error(self.name, addr[0], "Pacchetto errato")
				elif (str(ricevutoByte[0:4], "ascii") == const.CODE_CLOSE):
					break
				else:
					if str(ricevutoByte[0:4], "ascii") == const.CODE_SN: ### REQUEST SN
						if func.add_pktid(ricevutoByte[4:20], self.listPkt, self.port) is True:
							# FORWARD
							pk = pack.forward_sn(ricevutoByte)
							func.forward(pk, addr[0], self.sn_network)

							# RESPONSE
							if self.SN:
								# Aggiunta supernodi (collaterale)
								if str(ricevutoByte[75:80], "ascii") == (func.format_string(const.PORT_SN, 5, "0")):
									if not [str(ricevutoByte[20:75],"ascii"), str(ricevutoByte[75:80],"ascii")] in self.sn_network: 
										self.sn_network.append([str(ricevutoByte[20:75],"ascii"), str(ricevutoByte[75:80],"ascii")])
										func.write_daemon_success(self.name, addr[0], "SN Network - Added: " + str(ricevutoByte[20:75], "ascii"))
								pk = pack.answer_sn(ricevutoByte[4:20], self.host)
								sR = func.create_socket_client(func.roll_the_dice(ricevutoByte[20:75]), ricevutoByte[75:80])
								if sR != None:
									sR.sendall(pk)
									sR.close()
						#else:
						#	func.write_daemon_error(self.name, addr[0], "Pacchetto già ricevuto")

					elif str(ricevutoByte[0:4], "ascii") == const.CODE_ANSWER_SN: ### ANSWER SN
						if self.SN:
							if func.check_sn(ricevutoByte[4:20], self.listPkt) is True:
								# ADD SN TO NETWORK
								if not [str(ricevutoByte[20:75], "ascii"), str(ricevutoByte[75:80], "ascii")] in self.sn_network:
									self.sn_network.append([str(ricevutoByte[20:75],"ascii"), str(ricevutoByte[75:80],"ascii")])
									func.write_daemon_success(self.name, addr[0], "SN NETWORK - Added: " + str(ricevutoByte[20:75], "ascii"))
								else:
									func.write_daemon_error(self.name, addr[0], "SN NETWORK - Super nodo già presente")
							else:
								func.write_daemon_error(self.name, addr[0], "Tempo per la risposta terminato.")
						else:
							if func.check_sn(ricevutoByte[4:20], self.listPkt) is True:
								if not [str(ricevutoByte[20:75], "ascii"), str(ricevutoByte[75:80], "ascii")] in self.sn_network:
									self.sn_network.append([str(ricevutoByte[20:75], "ascii"), str(ricevutoByte[75:80],"ascii")])
									func.write_daemon_success(self.name, addr[0], "SN NETWORK - Added: " + str(ricevutoByte[20:75], "ascii"))
								else:
									func.write_daemon_error(self.name, addr[0], "SN NETWORK - Super nodo già presente")
							else:
								func.write_daemon_error(self.name, addr[0], "Tempo per la risposta terminato.")

					elif str(ricevutoByte[0:4], "ascii") == const.CODE_LOGIN: ### LOGIN
						if self.SN:
							pk = func.reconnect_user(ricevutoByte[4:59], self.listUsers)
							if pk == const.ERROR_PKT: 
								pk = pack.answer_login()
							conn.sendall(pk)
							user = [ricevutoByte[4:59], ricevutoByte[59:], pk[4:]]
							if not user in self.listUsers:
								self.listUsers.append(user)
								func.write_daemon_success(self.name, addr[0], "LOGIN OK")
							else: func.write_daemon_success(self.name, addr[0], "RECONNECT OK")
							#print(self.listUsers)

					elif str(ricevutoByte[0:4], "ascii") == const.CODE_ADDFILE:
						if self.SN:
							if func.isUserLogged(ricevutoByte[4:20], self.listUsers):
								if(func.check_file(self.listFiles, ricevutoByte)):
									self.listFiles.insert(0, [ricevutoByte[20:52], ricevutoByte[52:152], ricevutoByte[4:20]])
									func.write_daemon_success(self.name, addr[0], "ADD FILE: " + str(ricevutoByte[52:152], "ascii").strip())
								else:
									func.write_daemon_error(self.name, addr[0], "ADD FILE - File già inserito")
							else:
								func.write_daemon_error(self.name, addr[0], "ADD FILE - User not logged")

					elif str(ricevutoByte[0:4], "ascii") == const.CODE_REMOVEFILE:
						if self.SN:
							if func.isUserLogged(ricevutoByte[4:20], self.listUsers):
								findFile = False
								i = 0
								for file in self.listFiles:
									if (ricevutoByte[4:20] == file[2]) and (ricevutoByte[20:] == file[0]):
										findFile = True
										del self.listFiles[i]
										func.write_daemon_success(self.name, addr[0], "REMOVE FILE: " + str(ricevutoByte[20:], "ascii").strip())
										i -= 1
									i += 1
								if not findFile:
#.........这里部分代码省略.........
开发者ID:tommasoberlose,项目名称:p2p_kazaa,代码行数:103,代码来源:Daemon.py


注:本文中的Function.create_socket_client方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。