Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora
WF-1000X M6 è la sesta generazione di auricolare in-ear sviluppata da Sony, un prodotto che punta a coniugare facilità di utilizzo con una elevata qualità di riproduzione dei contenuti audio e una cura nella riduzione del rumore ambientale che sia da riferimento
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI
Snowflake ha presentato diverse novità per la sua piattaforma legate all'intelligenza artificiale. Quella forse più eclatante è una collaborazione con OpenAI, ma non mancano diverse nuove funzionalità che rendono la piattaforma più flessibile e in grado di rispondere meglio alle esigenze in continuo cambiamento delle aziende
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI
Con velocità teoriche fino a 11 Gbps, gestione tramite app intelligente e protezione avanzata dei dispositivi, Roamii BE Pro porta il Wi‑Fi 7 tri‑band nelle abitazioni più esigenti. Un sistema Wi-Fi Mesh proposto da MSI allo scopo di garantire agli utenti una rete fluida e continua capace di sostenere streaming 8K, gaming competitivo e le applicazioni moderne più esigenti in termini di banda
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 07-10-2003, 13:38   #1
djcuca
Senior Member
 
Iscritto dal: May 2003
Città: Taranto
Messaggi: 418
Acettare Id Tramite Autenticazione

salve ho un problema in vb cm sapete nn lo conosco bene cmq...
ho fatto un prog di file transfer tra due pc..
praticamente vorrei che il server quando ha la richiesta di connessione del client, accetta solo tramite un nome utente e password che il client deve dare...
cm devo fare?
__________________
11001010110011001010
djcuca è offline   Rispondi citando il messaggio o parte di esso
Old 07-10-2003, 13:51   #2
bsummer
Senior Member
 
L'Avatar di bsummer
 
Iscritto dal: Oct 2002
Messaggi: 487
Un modo molto semplice è...una volta accettata la connessione il programma che funge da server attende dei dati...i primi, che so, 32 byte rappresentano user è password dell'utente connesso. Li verifica e se sono ok, bene, altrimenti chiude la connessione...

Ho fatto anch'io recentemente un programma di questo tipo (scambio file tra 2 pc)...puoi dirmi che funzionalità hai inserito?

Aloha!
bsummer è offline   Rispondi citando il messaggio o parte di esso
Old 08-10-2003, 12:57   #3
djcuca
Senior Member
 
Iscritto dal: May 2003
Città: Taranto
Messaggi: 418
potresti darmi una mano per fare quello ke hai detto?

questo è il client:

Option Explicit

Dim buffer() As Byte
Dim lBytes As Long
Dim temp As String

Private Sub cmdBrowse_Click()
dlg.ShowOpen
txtFile = dlg.FileName
End Sub

Private Sub cmdSend_Click()
cmdSend.Enabled = False
lBytes = 0
ReDim buffer(FileLen(dlg.FileName) - 1)
Open dlg.FileName For Binary As 1
Get #1, 1, buffer
Close #1
Load wsTCP(1)
wsTCP(1).RemoteHost = txtIP
wsTCP(1).RemotePort = 999
wsTCP(1).Connect
lblStatus = "Connecting..."
End Sub



Private Sub wsTCP_Close(Index As Integer)
lblStatus = "Connection closed"
Unload wsTCP(1)
End Sub

Private Sub wsTCP_Connect(Index As Integer)
lblStatus = "Connected"

wsTCP(1).SendData dlg.FileTitle & vbCrLf
End Sub

Private Sub wsTCP_DataArrival(Index As Integer, ByVal bytesTotal As Long)
wsTCP(1).GetData temp
If InStr(temp, vbCrLf) <> 0 Then temp = Left(temp, InStr(temp, vbCrLf) - 1)
If temp = "OK" Then
wsTCP(1).SendData buffer
Else
lblStatus = "Something wrong"
Unload wsTCP(1)
cmdSend.Enabled = True
End If
End Sub

Private Sub wsTCP_SendComplete(Index As Integer)
If temp = "OK" Then
lblStatus = "Send complete"
temp = ""
Unload wsTCP(1)
cmdSend.Enabled = True
End If
End Sub

Private Sub wsTCP_SendProgress(Index As Integer, ByVal bytesSent As Long, ByVal bytesRemaining As Long)
If temp = "OK" Then
lBytes = lBytes + bytesSent
lblStatus = lBytes & " out of " & UBound(buffer) & " bytes sent"
End If
End Sub

e questo è il server:


Option Explicit

Dim lPos As Long
Dim bOK As Boolean
Dim fname As String

Private Sub cmdRun_Click()
If cmdRun.Caption = "Run" Then
cmdRun.Caption = "Stop"
wsTCP(0).LocalPort = 999
wsTCP(0).Listen
Else
wsTCP(0).Close
cmdRun.Caption = "Run"
End If
End Sub

Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive & "\"
End Sub




Private Sub wsTCP_Close(Index As Integer)
Close #1
Unload wsTCP(1)
bOK = False
End Sub

Private Sub wsTCP_ConnectionRequest(Index As Integer, ByVal requestID As Long)
Load wsTCP(1)
wsTCP(1).Accept requestID
lblip = wsTCP(0).RemoteHostIP
lblhost = wsTCP(0).RemoteHost
End Sub

Private Sub wsTCP_DataArrival(Index As Integer, ByVal bytesTotal As Long)
If Not bOK Then
wsTCP(1).GetData fname
If InStr(fname, vbCrLf) <> 0 Then fname = Left(fname, InStr(fname, vbCrLf) - 1)
bOK = True
If Dir(Dir1.Path & "\" & fname) <> "" Then Kill Dir1.Path & "\" & fname
Open Dir1.Path & "\" & fname For Binary As 1
lPos = 1
wsTCP(1).SendData "OK" & vbCrLf
Else
Dim buffer() As Byte
wsTCP(1).GetData buffer
Put #1, lPos, buffer
lPos = lPos + UBound(buffer) + 1
End If
End Sub


grazie
__________________
11001010110011001010
djcuca è offline   Rispondi citando il messaggio o parte di esso
Old 08-10-2003, 19:22   #4
bsummer
Senior Member
 
L'Avatar di bsummer
 
Iscritto dal: Oct 2002
Messaggi: 487
Più che editare il tuo codice preferisco farti un esempio.

Definiamo un tipo di dati enumerativo:

Codice:
Private Enum LoginState
	verifyLogin = 0
	clientConnected = 1
	waitForConnect = 2
End Enum
e definiamo pure una variabile globale

dim serverState as LoginState

Quando inizializzi il server poni

serverState = waitForConnect

Quando nel server hai l'evento ConnectionRequest, all'interno di tale procedura fai l'assegnazione :

serverState = verifyLogin

Ed eccoci al cuore di tutto, la procedura dell'evento DataArrival

Codice:
Private Sub WinSock1_DataArrival(ByVal bytesTotal As Long)

	dim MyData

	with WinSock1
	select case serverState
		case verifylogin:
			if . BytesReceived < 32 then exit sub
			.GetData MyData, vbArray + vbByte, 32
			if checkLogin(MyData) = false then 
				.close
				serverState= waitForConnect
			else
				serverState= clientConnected
			end if

		case ClientConnected:
			.GetData MyData
			call useData(MyData)
		
	end select
	end with
End Sub

Private function checkLogin(MyData() as byte) as boolean
	' fai un controllo che i primi 16 byte corrispondano ad un nome di login conosciuto
	' e che i 16 byte successivi siano la password ad esso associata. Naturalmente puoi usare
	' anche meno bytes, che so, 16, 8 per la login e 8 per la passw. Se c'è un riscontro
	' positivo restituisci true, altrimenti false
end function

Private sub useData(myData)
	' Quando sei connesso utilizza i dati come meglio credi ;)
end Sub
Il tutto è molto semplice. All'inizio poni lo stato del server come non connesso ad alcun client. Quando un client chiede la connessione il server subito l'accetta, e passa il suo stato in verifica login...Qui attende i primi 32 bytes (ma puoi scegliere benissimo tu il formato della login/password) e appena li riceve (infatti nel caso arrivino meno di 32 byte la procedura termina senza fare nulla) chiama una funzione apposita (che dovrai crearti) che controlla se l'utente è tra quelli noti. Se si allora il server passa in modalità di trasferimento dati normale, se no il server chiude la connessione e ne attende una nuova.

Aloha!
bsummer è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Sony WF-1000X M6: le cuffie in-ear di riferimento migliorano ancora Sony WF-1000X M6: le cuffie in-ear di riferiment...
Snowflake porta l'IA dove sono i dati, anche grazie a un accordo con OpenAI Snowflake porta l'IA dove sono i dati, anche gra...
Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo MSI Sistema Mesh Roamii BE Pro: il Wi-Fi 7 secondo M...
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Meta lavora a un sistema di riconoscimen...
Il mercato smartphone potrebbe registrar...
Apple punterà sull'architettura c...
NASA Curiosity: i processi non biologici...
Sega conferma l'arrivo di tanti nuovi gi...
La serie POCO X8 è pronta al debu...
Apple conferma che l'arrivo della 'nuova...
Le vendite di Square Enix sono in netto ...
iPhone 17e si mostra in un video 'first ...
Il nuovo Xiaomi Watch 5 è pronto ...
Steam Deck è out of stock in dive...
Le migliori offerte Amazon del weekend, ...
PC più potente, meno spesa: su Amazon ta...
Amazon Haul: come fare acquisti 'pazzi' ...
Threads permetterà agli utenti di...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 23:31.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v