Ciao raga
Il codice che vi sto per postare serve per connettere due pc tramite tcp per lo scambio di dati:
codice:Imports System.Runtime.Serialization Imports System.Runtime.Serialization.Formatters.Binary Imports System.Net.Sockets Imports System.Net.Sockets.TcpClient Imports System.Net Imports System Public Class Form1 Private moTcpClient, moTcpRxClient As TcpClient Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim moTcpServer = New TcpListener(13000) moTcpServer.Start() lb1.Text = ("Listening...") Button3.Enabled = False Button2.Enabled = True Button1.Enabled = False Do While Not moTcpServer.Pending Application.DoEvents() Loop moTcpRxClient = moTcpServer.AcceptTcpClient lb1.Text = ("Connection received...") moTcpServer.Stop() End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim moLocalIP = Dns.GetHostByName(Dns.GetHostName) Dim ip = moLocalIP.AddressList(0).ToString '// Creates object Dim oPerson As New Person(TextBox1.Text, Int32.Parse(TextBox2.Text)) '// Let's use dotNET TcpClient moTcpClient = New TcpClient() moTcpClient.Connect(ip, 13000) If moTcpClient.GetStream.CanWrite Then '// Serializes object in memory Dim bf As New BinaryFormatter() Dim oStream As New System.IO.MemoryStream() bf.Serialize(oStream, oPerson) '// Gets bytes... Dim buf(CInt(oStream.Length)) As Byte oStream.Position = 0 Dim iRet As Int32 = oStream.Read(buf, 0, buf.Length) oStream.Close() '// Send object through TCP-IP... moTcpClient.GetStream.Write(buf, 0, buf.Length) Button3.Enabled = True Button2.Enabled = False End If End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click '// Deserializes object Dim oNs As NetworkStream = moTcpRxClient.GetStream If oNs.CanRead Then If oNs.DataAvailable Then '// Deserializes object Try Dim bf As New BinaryFormatter() Dim oRxPerson As Person = CType(bf.Deserialize(oNs), Person) Risultato.Text = String.Format("Name:{0} Age:{1}", oRxPerson.Name, oRxPerson.Age) Catch ex As Exception '// Something wrong... MessageBox.Show(ex.Message, "Deserialization error", MessageBoxButtons.OK, MessageBoxIcon.Error) Finally '// Closes connection moTcpRxClient.Close() ' btnDeser.Enabled = False Button3.Enabled = False Button2.Enabled = False Button1.Enabled = True End Try End If End If End Sub End Class '// Just a simple person object... <Serializable()> Public Class Person Public Name As String Public Age As Int32 Public Sub New(ByVal name As String, ByVal age As Int32) Me.Name = name Me.Age = age End Sub End Class
Quest'esempio trovato in rete serve per mandare una stringa da un pc all'altro tramite tcp.
io invece vorrei inviare un file fisico esempio un "file.pdf", e che l'utente di destinazione quando va a deserializzare il file lo salvi automaticamente nella sua cartella Condivisi...
Come posso modificare il sopracitato codice per fare quanto detto?
Ho provato in vari modi ma nn ci riesco
Grazie mille![]()


Rispondi quotando