vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Pc's Verbinden mittels System.Net.Sockets Teil1 
Autor: dj.tommy
Datum: 23.09.15 09:57

Hallo Leute !

Ich habe unter http://www.codeproject.com/Articles/11422/Winsock-NET
Ein sogenannter Nachbau von Winsock
Funktioniert aber, wie ich die Winsock Component als Test Projekt eingebunden habe, ist ein Problem entstanden, so das es mich wieder mal nicht weiss was er von mir will.

Ich habe 2 Formulare
Form1 mit 2 Winsocks als Server
Form2 mit 1 Winsock als Client

Wie ich in Form1 auf listen geklickt habe, und unter Form2 auch Connect geklickt habe, hat Form1 die Verbindung Apzeptiert aber Winsock in Form2 Kommt ein fehler meldung, die Lautet "Ungültiger threadübergreifender Vorgang: Der Zugriff auf das Steuerelement Form2 erfolgte von einem anderen Thread als dem Thread, für den es erstellt wurde."
Könnt ihr mir bitte weiter helfen Danke
nun der Code:

 
Public Class Form1
 
    Private Sub Winsock1_Connected(sender As Winsock_Control.Winsock) Handles _
      Winsock1.Connected
        Me.Text = "Connect"
    End Sub
 
    Private Sub Winsock1_ConnectionRequest(sender As Winsock_Control.Winsock, _
      requestID As Net.Sockets.Socket) Handles Winsock1.ConnectionRequest
        Winsock2.Accept(requestID)
    End Sub
 
    Private Sub cmdSend_Click(sender As Object, e As EventArgs) Handles _
      cmdSend.Click
        Winsock2.Send("Server")
    End Sub
 
    Private Sub Winsock2_DataArrival(sender As Winsock_Control.Winsock, _
      BytesTotal As Integer) Handles Winsock2.DataArrival
        Dim Buffer As String = ""
        Winsock2.GetData(Buffer)
        MsgBox(Buffer)
    End Sub
 
    Private Sub cmdListen_Click(sender As Object, e As EventArgs) Handles _
      cmdListen.Click
        Winsock1.Listen()
    End Sub
 
    Private Sub Winsock1_HandleError(sender As Winsock_Control.Winsock, _
      Description As String, Method As String, myEx As String) Handles _
      Winsock1.HandleError
        MsgBox(Description, CType(16, MsgBoxStyle), "Winsock1")
    End Sub
 
    Private Sub Winsock2_HandleError(sender As Winsock_Control.Winsock, _
      Description As String, Method As String, myEx As String) Handles _
      Winsock2.HandleError
        MsgBox(Description, CType(16, MsgBoxStyle), "Winsock2")
    End Sub
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Form2.Show()
    End Sub
End Class
 
Public Class Form2
    Private Sub Winsock3_Connected(sender As Winsock_Control.Winsock) Handles _
      Winsock3.Connected
        Me.Text = "Connect"
    End Sub
 
    Private Sub Winsock3_DataArrival(sender As Winsock_Control.Winsock, _
      BytesTotal As Integer) Handles Winsock3.DataArrival
        Dim Buffer As String = ""
        Winsock3.GetData(Buffer)
        MsgBox(Buffer)
    End Sub
 
    Private Sub cmdConnect1_Click(sender As Object, e As EventArgs) Handles _
      cmdConnect1.Click
        Winsock3.Connect()
    End Sub
 
    Private Sub cmdSend1_Click(sender As Object, e As EventArgs) Handles _
      cmdSend1.Click
        Winsock3.Send("Client")
    End Sub
 
    Private Sub Winsock3_HandleError(sender As Winsock_Control.Winsock, _
      Description As String, Method As String, myEx As String) Handles _
      Winsock3.HandleError
        MsgBox(Description, CType(16, MsgBoxStyle), "Winsock3")
    End Sub
End Class
Teil2 Folgt
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Pc's Verbinden mittels System.Net.Sockets Teil5 
Autor: dj.tommy
Datum: 23.09.15 10:04

#Region " Private Functions/Subs "
    Private Sub ChangeState(ByVal new_state As WinsockStates)
        _State = new_state
        RaiseEvent StateChanged(Me, _State)
    End Sub
    Private Sub OnConnected(ByVal asyn As IAsyncResult)
        Try
            _Client.EndConnect(asyn)
            Me.ClientFinalizeConnection()
        Catch ex As Exception
            ChangeState(WinsockStates.Error)
            RaiseEvent HandleError(Me, ex.Message, ex.TargetSite.Name, _
              ex.ToString)
        End Try
    End Sub
    Private Sub ClientFinalizeConnection()
        ChangeState(WinsockStates.Connected)
        _Client.BeginReceive(_byteBuffer, 0, 1024, SocketFlags.None, AddressOf _
          DoRead, Nothing)
        RaiseEvent Connected(Me)
    End Sub
    Private Sub DoListen()
        Try
            _sockList = New Socket(AddressFamily.InterNetwork, _
              SocketType.Stream, ProtocolType.Tcp)
            Dim ipLocal As New IPEndPoint(IPAddress.Any, LocalPort)
            _sockList.Bind(ipLocal)
            _sockList.Listen(1)
            ChangeState(WinsockStates.Listening)
            _sockList.BeginAccept(New AsyncCallback(AddressOf OnClientConnect), _
              Nothing)
        Catch ex As Exception
            Me.Close()
            ChangeState(WinsockStates.Error)
            RaiseEvent HandleError(Me, ex.Message, ex.TargetSite.Name, _
              ex.ToString)
        End Try
    End Sub
    Private Sub OnClientConnect(ByVal asyn As IAsyncResult)
        Try
            Dim tmpSock As Socket
            If GetState = WinsockStates.Listening Then
                tmpSock = _sockList.EndAccept(asyn)
                RaiseEvent ConnectionRequest(Me, tmpSock)
                _sockList.BeginAccept(New AsyncCallback(AddressOf _
                  OnClientConnect), Nothing)
            End If
        Catch ex As Exception
            Me.Close()
            ChangeState(WinsockStates.Error)
            RaiseEvent HandleError(Me, ex.Message, ex.TargetSite.Name, _
              ex.ToString)
        End Try
    End Sub
    Private Sub DoStreamReceive(ByVal ar As IAsyncResult)
        Dim intCount As Integer
        Try
            SyncLock _Client
                intCount = _Client.EndReceive(ar)
            End SyncLock
            If intCount < 1 Then
                Me.Close()
                ReDim _byteBuffer(1024)
                RaiseEvent Disconnected(Me)
                Exit Sub
            End If
            AddToBuffer(_byteBuffer, intCount)
            'BuildString(_byteBuffer, 0, intCount)
            Array.Clear(_byteBuffer, 0, intCount)
            SyncLock _Client
                _Client.BeginReceive(_byteBuffer, 0, 1024, SocketFlags.None, _
                  AddressOf DoStreamReceive, Nothing)
            End SyncLock
        Catch ex As Exception
            Me.Close()
            ReDim _byteBuffer(1024)
            RaiseEvent Disconnected(Me)
        End Try
    End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Pc's Verbinden mittels System.Net.Sockets Teil2 
Autor: dj.tommy
Datum: 23.09.15 10:01

Imports System.Net
Imports System.Net.Sockets
Imports System.ComponentModel
 
#Region " History "
 
''
'' 10-20-2005 - Changed buffer mechanism to allow storing of multiple objects
''                 Required if you use multiple sends on bitmaps otherwise
''                 they stack as one bitmap and don't retrieve properly.
''                 Utilizes the EOT (end of transmission) (ascii 4) to do
''                 the separating, although it still checks for a count
''                 less than the byte length for backwards compatability.
''            - Sending data now appends an EOT at the end of the data
'' 10-19-2005 - Added support for direct byte() sending and retrieving
''            - Added support for bitmap sending and retrieving
'' 08-24-2005 - Released
''
 
#End Region
 
<System.ComponentModel.DefaultEvent("HandleError")> _
Public Class Winsock
    Inherits System.ComponentModel.Component
 
#Region " Events "
    Public Event Connected(ByVal sender As Winsock)
    Public Event Disconnected(ByVal sender As Winsock)
    Public Event DataArrival(ByVal sender As Winsock, ByVal BytesTotal As _
      Integer)
    Public Event ConnectionRequest(ByVal sender As Winsock, ByVal requestID As _
    Socket)
    Public Event SendComplete(ByVal sender As Winsock)
    Public Event HandleError(ByVal sender As Winsock, ByVal Description As _
      String, ByVal Method As String, ByVal myEx As String)
    Public Event StateChanged(ByVal sender As Winsock, ByVal state As _
    WinsockStates)
#End Region
 
#Region " Variables "
    Private _RemoteIP As String = "127.0.0.1"
    Private _LocalPort As Integer = 80
    Private _RemotePort As Integer = 80
    Private _State As WinsockStates = WinsockStates.Closed
    Private _sBuffer As String
    Private _buffer() As Byte
    Private _bufferCol As Collection
    Private _byteBuffer(1024) As Byte
    Private _sockList As Socket
    Private _Client As Socket
#End Region
 
#Region " Constructors "
    Public Sub New()
        Me.New(80)
    End Sub
    Public Sub New(ByVal Port As Long)
        Me.New("127.0.0.1", Port)
    End Sub
    Public Sub New(ByVal IP As String)
        Me.New(IP, 80)
    End Sub
    Public Sub New(ByVal IP As String, ByVal Port As Long)
        RemoteIP = IP
        RemotePort = Port
        LocalPort = Port
        _bufferCol = New Collection
    End Sub
#End Region
 
#Region " Properties "
    Public Property LocalPort() As Integer
        Get
            Return _LocalPort
        End Get
        Set(ByVal Value As Integer)
            If GetState = WinsockStates.Closed Then
                _LocalPort = Value
            Else
                Throw New Exception("Must be idle to change the local port")
            End If
        End Set
    End Property
    Public Property RemotePort() As Integer
        Get
            Return _RemotePort
        End Get
        Set(ByVal Value As Integer)
            If GetState <> WinsockStates.Connected Then
                _RemotePort = Value
            Else
                Throw New Exception("Can't be connected to a server and change" & _
                  "the remote port.")
            End If
        End Set
    End Property
    Public Property RemoteIP() As String
        Get
            Return _RemoteIP
        End Get
        Set(ByVal Value As String)
            If GetState = WinsockStates.Closed Then
                _RemoteIP = Value
            Else
                Throw New Exception("Must be closed to set the remote ip.")
            End If
        End Set
    End Property
    <Browsable(False)> Public ReadOnly Property GetState() As WinsockStates
        Get
            Return _State
        End Get
    End Property
#End Region
Teil3 folgt
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Pc's Verbinden mittels System.Net.Sockets Teil3 
Autor: dj.tommy
Datum: 23.09.15 10:01

#Region " Methods "
 
    Public Sub Listen()
        Dim x As New System.Threading.Thread(AddressOf DoListen)
        x.Start()
    End Sub
    Public Sub Close()
        Try
            Select Case GetState
                Case WinsockStates.Listening
                    ChangeState(WinsockStates.Closing)
                    _sockList.Close()
                Case WinsockStates.Connected, WinsockStates.Connecting, _
                  WinsockStates.ConnectionPending, WinsockStates.HostResolved, _
                  WinsockStates.Open, WinsockStates.ResolvingHost
                    ChangeState(WinsockStates.Closing)
                    _Client.Close()
                Case WinsockStates.Closed
                    'do nothing
            End Select
            ChangeState(WinsockStates.Closed)
        Catch ex As Exception
            ChangeState(WinsockStates.Error)
            RaiseEvent HandleError(Me, ex.Message, ex.TargetSite.Name, _
              ex.ToString)
        End Try
    End Sub
    Public Sub Accept(ByVal requestID As Socket)
        Try
            ChangeState(WinsockStates.ConnectionPending)
            _Client = requestID
            RaiseEvent Connected(Me)
            ChangeState(WinsockStates.Connected)
            _Client.BeginReceive(_byteBuffer, 0, 1024, SocketFlags.None, _
              AddressOf DoStreamReceive, Nothing)
        Catch ex As Exception
            ChangeState(WinsockStates.Error)
            RaiseEvent HandleError(Me, ex.Message, ex.TargetSite.Name, _
              ex.ToString)
        End Try
    End Sub
    Public Sub Connect()
        If GetState = WinsockStates.Connected Or GetState = _
          WinsockStates.Listening Then
            RaiseEvent HandleError(Me, "Already open, must be closed first", _
            "Connect", "Nothing here")
            Exit Sub
        End If
        Try
            Dim remIP As String = ""
            ChangeState(WinsockStates.ResolvingHost)
            Try
                Dim x As System.Net.IPAddress
                x = IPAddress.Parse(_RemoteIP)
                remIP = x.ToString
            Catch ex1 As Exception
                'not a valid IP address - resolve DNS
                Try
                    Dim ip As IPHostEntry = Dns.GetHostEntry(_RemoteIP)
                    Dim t() As IPAddress = ip.AddressList
                    remIP = t(0).ToString
                Catch ex2 As Exception
                    ChangeState(WinsockStates.Error)
                    RaiseEvent HandleError(Me, ex2.Message, _
                      ex2.TargetSite.Name, ex2.ToString)
                End Try
            End Try
            ChangeState(WinsockStates.HostResolved)
            _Client = New Socket(AddressFamily.InterNetwork, SocketType.Stream, _
              ProtocolType.Tcp)
            Dim rEP As New IPEndPoint(IPAddress.Parse(remIP), RemotePort)
            '_Client.Connect(rEP)
            ChangeState(WinsockStates.Connecting)
            _Client.BeginConnect(rEP, New AsyncCallback(AddressOf OnConnected), _
              Nothing)
        Catch ex As Exception
            ChangeState(WinsockStates.Error)
            RaiseEvent HandleError(Me, ex.Message, ex.TargetSite.Name, _
              ex.ToString)
        End Try
    End Sub
    Public Sub Connect(ByVal IP As String, ByVal Port As Integer)
        RemoteIP = IP
        RemotePort = Port
        Connect()
    End Sub
 
#End Region
Teil4 folgt
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Pc's Verbinden mittels System.Net.Sockets Teil4 
Autor: dj.tommy
Datum: 23.09.15 10:02

#Region " Public Functions/Subs "
    Public Function LocalIP() As String
        Dim h As System.Net.IPHostEntry = System.Net.Dns.GetHostEntry( _
          System.Net.Dns.GetHostName)
        Return CType(h.AddressList.GetValue(0), Net.IPAddress).ToString
    End Function
    Public Function RemoteHostIP() As String
        Dim iEP As IPEndPoint = _Client.RemoteEndPoint
        Return iEP.Address.ToString
    End Function
#End Region
 
#Region " Send Overloads "
 
    Public Sub Send(ByVal Data As String)
        Dim sendBytes() As Byte = System.Text.Encoding.ASCII.GetBytes(Data)
        Me.Send(sendBytes)
    End Sub
    Public Sub Send(ByVal Data() As Byte)
        Select Case GetState
            Case WinsockStates.Closed
                'can't send - not connected
            Case WinsockStates.Listening
                'listening
            Case WinsockStates.Connected
                Try
                    'send the bytes that are passed
                    ReDim Preserve Data(UBound(Data) + 1)
                    Data(UBound(Data)) = 4
                    _Client.Send(Data)
                Catch ex As Exception
                    Me.Close()
                    ChangeState(WinsockStates.Error)
                    RaiseEvent HandleError(Me, ex.Message, ex.TargetSite.Name, _
                      ex.ToString)
                End Try
        End Select
    End Sub
    Public Sub Send(ByVal Data As Bitmap)
        Dim str As New System.IO.MemoryStream
        Data.Save(str, System.Drawing.Imaging.ImageFormat.Bmp)
        Dim sendBytes(str.Length - 1) As Byte
        str.Position = 0
        str.Read(sendBytes, 0, str.Length)
        Me.Send(sendBytes)
    End Sub
 
#End Region
 
#Region " GetData Overloads "
 
    Public Sub GetData(ByRef data As String)
        Dim byt() As Byte = Nothing
        GetData(byt)
        For i As Integer = 0 To UBound(byt)
            If byt(i) = 10 Then
                data &= vbLf
            Else
                data &= ChrW(byt(i))
            End If
        Next
    End Sub
    Public Sub GetData(ByRef bytes() As Byte)
        If _bufferCol.Count = 0 Then Throw New IndexOutOfRangeException( _
          "Nothing in buffer.")
        Dim byt() As Byte = Me._bufferCol.Item(1)
        _bufferCol.Remove(1)
        ReDim bytes(UBound(byt))
        byt.CopyTo(bytes, 0)
    End Sub
    Public Sub GetData(ByRef bitmap As Bitmap)
        Dim byt() As Byte = Nothing
        GetData(byt)
        Dim str As New System.IO.MemoryStream(byt, False)
        bitmap = bitmap.FromStream(str)
    End Sub
 
#End Region
Teil5 folgt
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Pc's Verbinden mittels System.Net.Sockets Teil6 
Autor: dj.tommy
Datum: 23.09.15 10:05

Private Sub DoRead(ByVal ar As IAsyncResult)
        Dim intCount As Integer
        Try
            intCount = _Client.EndReceive(ar)
            If intCount < 1 Then
                Me.Close()
                ReDim _byteBuffer(1024)
                RaiseEvent Disconnected(Me)
                Exit Sub
            End If
            AddToBuffer(_byteBuffer, intCount)
            'BuildString(_byteBuffer, 0, intCount)
            Array.Clear(_byteBuffer, 0, intCount)
            _Client.BeginReceive(_byteBuffer, 0, 1024, SocketFlags.None, _
              AddressOf DoRead, Nothing)
        Catch ex As Exception
            Me.Close()
            ReDim _byteBuffer(1024)
            RaiseEvent Disconnected(Me)
        End Try
    End Sub
    Private Sub BuildString(ByVal Bytes() As Byte, ByVal offset As Integer, _
      ByVal count As Integer)
        Try
            Dim intIndex As Integer
            For intIndex = offset To offset + count - 1
                If Bytes(intIndex) = 10 Then
                    _sBuffer &= vbLf
                Else
                    _sBuffer &= ChrW(Bytes(intIndex))
                End If
            Next
            If _sBuffer.IndexOf(vbCrLf) <> -1 Then
                RaiseEvent DataArrival(Me, count)
                _byteBuffer.SetValue(_byteBuffer, 0, _byteBuffer.Length)
            End If
        Catch ex As Exception
            RaiseEvent HandleError(Me, ex.Message, ex.TargetSite.Name, _
              ex.ToString)
        End Try
    End Sub
    Private Sub AddToBuffer(ByVal bytes() As Byte, ByVal count As Integer)
        Dim curUB As Integer
        If Not _buffer Is Nothing Then curUB = UBound(_buffer) Else curUB = -1
        Dim newUB As Integer = curUB + count
        ReDim Preserve _buffer(newUB)
        Array.Copy(bytes, 0, _buffer, curUB + 1, count)
        Dim byterm As Byte = 4
        Dim idx As Integer = Array.IndexOf(_buffer, byterm)
        Dim byObj() As Byte
        Dim byTmp() As Byte
        While idx <> -1
            'found an EOT (end of transmission) marker split it if necessary and
            'put it in the buffer to get - call DataArrival
            Dim ln As Integer = _buffer.Length - (idx + 1)
            ReDim byObj(idx - 1)
            ReDim byTmp(ln - 1)
            Array.Copy(_buffer, 0, byObj, 0, idx)
            Array.Copy(_buffer, idx + 1, byTmp, 0, ln)
            ReDim _buffer(UBound(byTmp))
            Array.Copy(byTmp, _buffer, byTmp.Length)
            Me._bufferCol.Add(byObj)
            RaiseEvent DataArrival(Me, byObj.Length)
            idx = Array.IndexOf(_buffer, byterm)
        End While
        If count < bytes.Length - 1 And _buffer.Length > 0 Then
            _bufferCol.Add(_buffer)
            RaiseEvent DataArrival(Me, _buffer.Length)
            _buffer = Nothing
        End If
    End Sub
#End Region
End Class
#Region " Enumerations "
Public Enum WinsockStates
    Closed = 0
    Open = 1
    Listening = 2
    ConnectionPending = 3
    ResolvingHost = 4
    HostResolved = 5
    Connecting = 6
    Connected = 7
    Closing = 8
    [Error] = 9
    'Listening = 1
    'Connected = 2
End Enum
#End Region
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Glaube den grund gefunden zuhaben 
Autor: dj.tommy
Datum: 24.09.15 17:34

Hallo Leute!
Das Projekt was ich gefunden habe unter
http://www.codeproject.com/Articles/11422/Winsock-NET
Ist im diesem Beispiel so geschrieben:
 
Private Sub Winsock3_DataArrival(ByVal sender As Winsock_Control.Winsock, ByVal _
  BytesTotal As Integer) Handles Winsock3.DataArrival
        Dim s As String
        Winsock3.GetData(s)
        MsgBox(s)'<<<<Mit einem MsgBox
    End Sub
Und in meinem Projekt:
    Private Sub Winsock3_DataArrival(sender As Winsock_Control.Winsock, _
      BytesTotal As Integer) Handles Winsock3.DataArrival
        Dim Buffer As String = ""
        Winsock3.GetData(Buffer)
        TextBox1.Text =Buffer '<<<<< Mit einem TextBox
    End Sub
Meine Vermutung ist das ich in mit dem Steuerelement Textbox threadübergreife und daher der Fehler
wenn, ich es wieder mit MsgBox teste funktioniert es wieder.
Wie stelle ich es an, das ich die Daten von GetData, die in einem Winsock3_DataArrival-Prozedur befindet auslesen kann, ohne das ich threadübergreife ?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Glaube den grund gefunden zuhaben 
Autor: ModeratorFZelle (Moderator)
Datum: 24.09.15 18:12

Wenn du Threadübergreifend in diese Suche eingibst ( 30 Tage umstellen nicht vergessen ) dann bekommst du haufenweise antworten.

Aber das suchen hier solltest du nach 10 Jahren im Forum doch langsam können.


Aber ganz abgesehen davon, eine VB6 (und damit 15 Jahre veraltetet) Technik auszugraben um etwas heute zu machen ist nicht wirklich gut.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Glaube den grund gefunden zuhaben 
Autor: dj.tommy
Datum: 24.09.15 19:03

Hallo FZelle !
ich habe im google danach gesucht aber komme leider nicht auf einen grünen Zweig Und ja ich weiß das Vb6 nicht vb.net ist, und ich weiß auch das ich manchmal nicht ganz von Vb6 weg komme.
Einerseits war vb6 leicht aber eingeschränkt, was unter vb.net wieder besser ist weil man viel mehr Möglichkeiten hat. Aber ich finde es nur schade das unter vb.net in diesem Fall gibt es kein fertiges Steuerelement Aber der Grund ist der, das ich nur selbst angelernter Hobby Programmierer bin, und keine Programmierschule besucht habe, und somit mich nicht wirklich mit Programmiertechnik auskenne, sondern eher oberflächlich.
Ich habe schon viel damit beschäftigt, und habe schon viel programmiert. Und ehrlich gesagt gefällt es mir auch und habe Spaß daran.
Ich habe Stunden lang nach Netzwerk Verbindung gesucht, zu Beispiel nach vb.net chat oder nach Tcp/Ip gesucht, und ich habe auch was gefunden keine frage.
Aber leider nichts mit dem ich was anfangen kann, weil es mir eindeutig zu hoch ist Ich suche eigentlich ein simple Codes wo ich ein Server und mehrere Clienten verbinden kann.

Ps: sollte ich nervig sein, dann bitte es mir sagen und ich werde keine Fragen in diesem Forum mehr stellen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Glaube den grund gefunden zuhaben 
Autor: ModeratorFZelle (Moderator)
Datum: 24.09.15 23:31

Das hat mit nervig nichts zu tun, aber wie gesagt das Wort "threadübergreifender" hier in die Suche
eingegeben, bekommst du 5 Seiten a 25 Postings dazu.
Eines der ersten ist http://www.vbarchiv.net/forum/id22_i94910t94910_threaduebergreifende-verwendung-von-steuerelementen.html

Zitat:

Aber leider nichts mit dem ich was anfangen kann, weil es mir eindeutig zu hoch ist

Das bedeutet nur, das du dich bisher nur mit Snippets beschäftigt hast.
Du solltest mal die Grundlagen wirklich erlesen, das ist zwar manchmal ( meistens ) langweilig aber dann versteht man mit einem mal was man macht und rennt nicht ständig gegen Wände.

Zitat:

Ich suche eigentlich ein simple Codes wo ich ein Server und mehrere Clienten verbinden kann.

Netzwerkprogrammierung und damit auch Multitasking ist etwas was wirklich Grundlagen wissen erfordert.

Aber MS hat mit der microsoftvirtualacademy eine gute Anlaufstelle.
Client/Server ist auch soetwas, was soll das werden?
Sowas wie Chat oder ein Datenbankservice?
Chat wäre mit SignalR zu machen, DB Service mit WebApi zu machen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Glaube den grund gefunden zuhaben 
Autor: dj.tommy
Datum: 25.09.15 00:37

Hallo FZelle !
ich habe mir ein Spiel gebastelt, und damit man mit 2 oder mehre pc's miteinander spielen kann möchte ich sie gerne verbinden.
Indem ich die Spielinformation von jeden Spieler über Netzwerk sende.

Ich versuche auch die Grundlagen zu lesen beziehungsweise zu verstehen.
Aber es wird oft und vor allem unter MSN Seiten nur kurz und bündig erklärt, und manchmal mit Fachbegriffe um sich geworfen, so dass ein normaler Mensch wie ich nur ? um sich hat.

Und eine Programmierschule zu besuchen, habe ich mir auch schon Gedanken gemacht. Nur die sind gerade nicht wirklich leistbar.
Ich habe mir Seite angesehen z.B. 990 € für 2 Tage was bitte soll ich da lernen also das was ich dort lerne kann ich groß teils selber schon.
Wenn, ich noch tiefer in die Programmiertechnik erfahren will brauch ich zeit und viel Geld die ich nicht habe.

Ich hoffe das ich dich jetzt nicht zu getextet habe.
Ich wollte nur das du mich ein wenig verstehst.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Glaube den grund gefunden zuhaben 
Autor: sv00010
Datum: 25.09.15 05:51

Suche mal nach Delegate.
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Glaube den grund gefunden zuhaben 
Autor: ModeratorFZelle (Moderator)
Datum: 26.09.15 17:20

Zitat:

Aber es wird oft und vor allem unter MSN Seiten nur kurz und bündig erklärt, und manchmal mit Fachbegriffe um sich geworfen, so dass ein normaler Mensch wie ich nur ? um sich hat.


Das beides bedeutet das du immer nur nach Snippets suchst und nicht nach ganzen Tutorials.

Zitat:

Wenn, ich noch tiefer in die Programmiertechnik erfahren will brauch ich zeit und viel Geld die ich nicht habe

Geld brauchst du nicht, es gibt genug Online Material das man legal Kostenlos bekommen kann, z.b.
auf codeproject.com oder microsoftvirtualacademy.com , aber Zeit wirst du wohl mitbringen müssen, denn lernen kostet immer Zeit.

Zitat:

Ich wollte nur das du mich ein wenig verstehst.

Ich verstehe das schon, wie die meisten Hobbyprogrammierer bist du recht "schnell" losgekommen und glaubst dann das Programmieren ja nicht soo schwer ist.
Wenn du dann aber auf Schwierigkeiten triffst, meinst du das das mal eben aus der Welt zu schaffen ist.
Was glaubst du, warum man Jahre lang studieren muss oder Jahrzehnte Erfahrung am Job haben muss um komplexe Systeme zu erstellen?

Also auch wenn es dir schwer fällt es zu glauben, du musst die Grundlagen lernen.
Aber ich habe dir ja schon 2 Links zu exact diesem Thema gegeben
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Glaube den grund gefunden zuhaben 
Autor: dj.tommy
Datum: 26.09.15 23:59

Hallo sv00010 und FZelle !
ich habe mir Delegate und Invoke mal angesehen.
Nur Invoke funktioniert nur unter Formular was ich bis jetzt erfahren habe.
Ich würde gerne Client und Server im Komponenten erstellen und dies im Formular einbinden oder als Code deklarieren.
Es ist alles fertig, nur das blöde ist der Empfang, ich kann ihn nicht weiterleiten kann, weil eben dieser Fehler entsteht
und die Verbindung geschlossen wird.
Also unter Formular funktioniert es mittels Invoke
kann ich es irgendwie unter Komponente machen?
Ich meine ich habe mich seit letzten tage einiges gelesen und getestet.
Ich habe erfahren das so endlich Invoke unter Komponente gibt mittels System.ComponentModel.ISynchronizeInvoke
habe ich auch eingebaut und getestet, nur die variable hatte Nothing
habe weiter erforscht und erfahren das ich dieses teil brauche, damit die Variable in Instanz gesetzt wird.
<System.ComponentModel.Browsable(False)> _
Public Property SyncObject() As
System.ComponentModel.ISynchronizeInvoke
Get
If _syncObject Is Nothing And Me.DesignMode Then
Dim designer As IDesignerHost =
Me.GetService(GetType(IDesignerHost))
If Not (designer Is Nothing) Then
_syncObject = designer.RootComponent
End If
End If
Return _syncObject
End Get
Set(ByVal Value As System.ComponentModel.ISynchronizeInvoke)
If Not Me.DesignMode Then
If Not (_syncObject Is Nothing) And Not (_syncObject
Is Value) Then
Throw New Exception("Property can not be set at
run-time")
Else
_syncObject = Value
End If
End If
End Set
End Property
Juhhu es funktioniert :-D
Oder doch nicht
Nein denn der Server geht nicht, weil ich den Server-Komponente nicht auf Formular gelegt habe, so das der obere Code teil "ich sage mal" nicht angesprochen wird, sondern als Code deklariert.
Ich habe weiter erforscht aber bis heute noch nichts gefunden, wie ich das Problem beheben kann.
Könntet ich vielleicht ein weg weisen ? warum ich möchte das?!
Weil es soll funktionieren egal ob man es als Code deklariert, oder in einem Formular einbindet.

Ich sage wenn man was macht das mach es richtig oder gar nicht
Mfg DjTommy
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Glaube den grund gefunden zuhaben 
Autor: sv00010
Datum: 27.09.15 11:29

Es gebe dann noch die Möglichkeit, statt Dispose und Invoke eine neue Klasse zu erstellen, welche von der Event-Klasse abgeleitet ist.

https://msdn.microsoft.com/de-de/library/ms172877.aspx
0
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel