6 messaggi dal 23 febbraio 2007
Ciao a tutti, devo fare una cosa del genere: ho un computer con un suo indirizzo IP e devo trasmettere a un'altro computer (collegato per mezzo di uno switch).
Una cosa del tipo: ho un vettore di 57 Byte e lo devo trasmettere all'indirizzo IP x.y.z.j

Qualcuno saprebbe indicarmi come cominciare, quali moduli installare etc. etc.
Grazie !
501 messaggi dal 09 giugno 2006
Contributi
Ciao.

Puoi essere un po' più preciso? Quale linguaggio puoi utilizzare? Quale versione di .NET? In quale sistema operativo dovranno girare il client e il server?

.NET mette a disposizione un numero considerevole di soluzioni. Si va dall'uso dei socket, a .NET Remoting, a web services, ecc. ecc.

Ciao.

.:. Marcello Rutter .:.
6 messaggi dal 23 febbraio 2007
Attualmente uso Visual Basic Express con il Framework .net 2.
Il sistema operaivo attuale è Windows Xp.
Vorrei una cosa più semplice possibile; avevo sentito parlare di un modulo socket (o qualcosa del genere), è una cosa abbastanza semplice?
501 messaggi dal 09 giugno 2006
Contributi
Ciao.

La cosa non è complessa, forse lo è di più il contorno. Dal tuo primo post no si capisce se ti è sufficiente sviluppare un'applicazione per Windows (Windows Forms oppure una Console Application) oppure se devi sviluppare un servizio di Windows; non è chiaro se la comunicazione avverrà sempre 1-1 (client-server) oppure se i client possono essere più di uno (oo-1) nel qual caso è necessatio anche implementare un sistema multithread.

Comunque sia puoi farti un'idea guardando qualche semplice esempio:

http://www.codeproject.com/vb/net/winsockdotnet.asp
http://www.codeproject.com/useritems/winsock2005.asp
Questo progetto è interessante perché implementa in .NET un controllo che esisteva in VB6 (Winsock). Se usi Windows Forms forse potrebbe essere la via più semplice.

http://www.eggheadcafe.com/articles/20020323.asp
Un semplice esempio di partenza.

http://msdn2.microsoft.com/en-us/library/1612451t.aspx
http://msdn2.microsoft.com/en-us/library/system.net.sockets.tcplistener_members.aspx
http://msdn2.microsoft.com/en-us/library/system.net.sockets.networkstream.aspx
http://www.eggheadcafe.com/articles/20020323.asp
http://www.codeproject.com/vb/net/TinyUDP.asp
Altri link utili (documentazione MSDN delle classi base coinvolte ed esempi)

http://msdn2.microsoft.com/en-us/library/aa185916.aspx
Il punto di partenza per .NET Remoting che potrebbe essere una valida alternativa all'uso diretto delle classi Tcp & C. di .NET

Ciao.

.:. Marcello Rutter .:.
6 messaggi dal 23 febbraio 2007
Vediamo se ho capito bene: ho un PC "A" con indirizzo IP 100.100.100.1 e un PC "B" con indirizzo 100.100.100.2, e voglio trasmettere queste stringhe:
A (richiesta) - "Che ora e?"
B (risposta) - "Sono le 18:00"



Imports System
Imports System.Net.Sockets
Imports System.Text

Public Class Form1
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim tcpClient As New System.Net.Sockets.TcpClient()
        tcpClient.Connect("100.100.100.2", 8000)
        Dim networkStream As NetworkStream = tcpClient.GetStream()
        Dim sendBytes As [Byte]() = Encoding.ASCII.GetBytes("Che ora è?")
        networkStream.Write(sendBytes, 0, sendBytes.Length)
        Dim bytes(tcpClient.ReceiveBufferSize) As Byte
        networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
        Dim returndata As String = Encoding.ASCII.GetString(bytes)
        ' adesso vado a leggere 'returndata'
        tcpClient.Close()
    End Sub
End Class

e returndata dovrebbe contenere "Sono le 18:00"?
501 messaggi dal 09 giugno 2006
Contributi
Ciao.

Scusa ma leggo il tuo post solo ora: ero un ferie!

Allora, il codice che hai riportato è corretto (per il client) e rappresenta il punto di partenza. Chiaramente dovrebbe esistere una controparte server di cui non hai riportato il codice ma che negli esempi che ti ho indicato esiste.

Da qui puoi proseguire nello sviluppo della tua applicazione TCP/IP. Prima di tutto ti consiglio di gestire bene le eccezioni (Try/Catch/Finally/End Try).

Poi sarebbe buona abitudine parametrizzare quanto più possibile (indirizzo IP, porta, timeout, ecc.): per questo, se usi VB.NET, puoi far riferimento a My.Settings.

Sarebbe altresì importante implementare funzionalità di Tracing che ti consentirebbero di loggare le attività del programma (cosa molto importante anche per il controllo dell'applicazione in produzione). .NET 2.0 rende questa attività estremamente semplice (in altrnativa, comunque, esistono framework altrettanto potenti come, ad esempio, log4net).

Ciao.

.:. Marcello Rutter .:.
6 messaggi dal 23 febbraio 2007
Sto realizzando un sistema di domanda/risposta tra client e server (sempre tcp/ip).
Il client trasmette i dati, dopo un certo tempo riceve la risposta, poi trasmette nuovamente dati e aspetta la risposta, e cos' via.
Voglio visualizzare i dati ricevuti in un textbox: converto i dati ricevuti in stringa e li visualizzo con TextBox1.AppendText.
Il problema è che quando c'è l'istruzione

networkStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))

la finestra sparisce.

Come posso eseguire l'istruzione tenendo la finestra attiva?
Grazie.

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.