Ok tutto chiaro ^^. Allora io ho cambiato metodo e per inviare il file ho usato il winsock e non le mail. Io vorrei che il mio programma funzionasse senza che io inserisca niente, cioè senza che io inserisca il percorso del file (che sarà costante) e senza dover cliccare su invia o su connetti (anche l'ip sarà costante) quindi all'apertura della form il programma dovrebbe fare tutto solo. Vi posto il mio codice(del client) spero che mi possiate aiutare.
________________________________________________________________________________
Option Explicit
Private Declare Function getsockopt Lib "wsock32.dll" (ByVal s As Long, ByVal Level As Long, ByVal optname As Long, optval As Any, optlen As Long) As Long
Private Const SO_SNDBUF = &H1001
Private Const SOL_SOCKET = &HFFFF&
Private FILEHANDLE As Integer
Private DIMENSIONEPACCHETTO As Long
Private Sub Connetti_Click()
If Socket.State <> sckClosed Then Socket.Close
Socket.LocalPort = 0
Socket.Connect IndirizzoIP.Text, 1500
End Sub
Private Sub Form_Unload(Cancel As Integer)
If SocketInvio.State <> sckClosed Then SocketInvio.Close
If Socket.State <> sckClosed Then Socket.Close
Socket.LocalPort = 0
End Sub
Private Sub Invia_Click()
Dim POSIZIONE As Integer
If Socket.State <> sckConnected Then Exit Sub
If Dir(NomeFile.Text) = "" Then
MsgBox "Il file non esiste!", vbCritical + vbOKOnly
Else
POSIZIONE = 0
While InStr(POSIZIONE + 1, NomeFile.Text, "\") > 0
POSIZIONE = InStr(POSIZIONE + 1, NomeFile.Text, "\")
Wend
Socket.SendData "/FILE " & Mid(NomeFile.Text, POSIZIONE + 1) & " " & FileLen(NomeFile.Text)
End If
End Sub
Private Sub SocketInvio_Connect()
Dim DATI(511) As Byte
FILEHANDLE = FreeFile
Open NomeFile.Text For Binary As FILEHANDLE
Get FILEHANDLE, , DATI
SocketInvio.SendData DATI
Call getsockopt(SocketInvio.SocketHandle, SOL_SOCKET, SO_SNDBUF, DIMENSIONEPACCHETTO, Len(DIMENSIONEPACCHETTO))
If DIMENSIONEPACCHETTO = 0 Then DIMENSIONEPACCHETTO = 8192
End Sub
Private Sub SocketInvio_Close()
Close FILEHANDLE
If SocketInvio.State <> sckClosed Then SocketInvio.Close
End Sub
Private Sub Socket_DataArrival(ByVal bytesTotal As Long)
Dim DATI() As Byte
Call Socket.GetData(DATI)
DATI = StrConv(DATI, vbUnicode)
If Left(DATI, 11) = " +OK: PORTA" Then
If SocketInvio.State <> sckClosed Then SocketInvio.Close
SocketInvio.LocalPort = 0
SocketInvio.Connect Socket.RemoteHostIP, Mid(DATI, 12)
End If
If (Left(DATI, 10) = " +OK: RECV") Then
If FILEHANDLE <> 0 Then
DATI = Space(DIMENSIONEPACCHETTO / 2)
Get FILEHANDLE, , DATI
SocketInvio.SendData DATI
End If
End If
If (Left(DATI, 10) = " +OK: FINE") Then
Close FILEHANDLE
SocketInvio.Close
MsgBox "Trasferimento completato!", vbInformation + vbOKOnly
End If
End Sub
Ultima modifica effettuata da LoL il 19/02/2011 alle 18:43 |