Public Class GetSocket
Private Tcpclient As New TcpClient
Private NetStream As NetworkStream
Public Baglantivar() As Boolean
Public GonderilecekBytelar() As Byte, AlinanBytelar() As Byte
Public Sub TcpClientBaglan(ByVal IPAddress As String, ByVal port As String)
If Form1.BaglantiDurumu = True Then
Exit Sub
End If
Try
Tcpclient.Connect(IPAddress, Integer.Parse(port))
Tcpclient.ReceiveTimeout = 5000
Tcpclient.SendTimeout = 5000
AlinanBytelar = New Byte(Tcpclient.ReceiveBufferSize) {}
NetStream = Tcpclient.GetStream()
Form1.BaglantiDurumu = True
Form1.Label_BagDurum.ForeColor = Color.Green
Form1.Label_BagDurum.Text = "Bağlandı"
Catch ex As System.Exception
Form1.BaglantiDurumu = False
Form1.Label_BagDurum.ForeColor = Color.Red
Form1.Label_BagDurum.Text = "Bağlı Değil"
End Try
End Sub
Public Sub BaglantiKes()
If Form1.BaglantiDurumu = False Then
Exit Sub
End If
'Bildirim
NetStream.Close()
Tcpclient.Close()
Form1.BaglantiDurumu = False
Form1.Label_BagDurum.ForeColor = Color.Red
Form1.Label_BagDurum.Text = "Bağlı Değil"
End Sub
Yukarıdaki gibi bir sınıf oluşturmaya çalışıyorum.
-TcpClientBaglan(192.168.1.60,80) Komutu ile bağlanıyor
-BaglantiKes() çalıştıryorum bağlantı kesiliyor.
-TcpClientBaglan(192.168.1.60,80) Bağlantı kestikten sonra tekrar bağlan diyorum bağlanmıyor
Kodu aşağıdaki şekilde düzenlersen çözülecektir. (Test etme imkanım olmadı)
Tcpclient As New TcpClient
Tcpclient.Connect(IPAddress, Integer.Parse(port))
Public Class GetSocket
"Private Tcpclient As New TcpClient" Yerine "Tcpclient As New TcpClient" Yazmalıyım
Diğeri Try altında
Try
"Tcpclient.Connect(IPAddress, Integer.Parse(port))" Bu zaten aynı
Ben yanlışmı düşünüyorum. Dört adet prosedür ile yapmayı düşündüm.
Birincisi Tcp client bağlantı kursun
İkincisi Client den datayı okusun
Üçüncüsü Client e data göndersin
Dördüncüsü Kapatsın
Alıntı YapPublic Class GetSocket
"Private Tcpclient As New TcpClient" Yerine "Tcpclient As New TcpClient" Yazmalıyım
Hayır, buradaki amaç bağlantı objesini Method'a girdiğinde yeniden oluşturmak ve parametlerini vermek.
Yani kod ;
Public Sub TcpClientBaglan(ByVal IPAddress As String, ByVal port As String)
If Form1.BaglantiDurumu = True Then
Exit Sub
End If
Try
Tcpclient As New TcpClient
Tcpclient.Connect(IPAddress, Integer.Parse(port))
Tcpclient.ReceiveTimeout = 5000
Tcpclient.SendTimeout = 5000
AlinanBytelar = New Byte(Tcpclient.ReceiveBufferSize) {}
NetStream = Tcpclient.GetStream()
şeklinde olacak. Yukarıda oluşturduğun objeyi iptal et.
Sizin dediğiniz gibi oluşturusam bu sefer
Public Sub BaglantiKes()
Tcpclient.Close() --- Bu sfer Bunu tanımıyor.
End Sub
mesaj birleştirme:: 31 Ocak 2013, 15:17:16
Imports System
Imports System.Text
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports Microsoft.VisualBasic
Public Class GetSocket
Public Baglantivar() As Boolean
Public GonData(8192) As Byte, GelData(8192) As Byte
Public Sub TcpClientOku(ByVal IPAddress As String, ByVal port As String)
Dim Tcpclient As New TcpClient
Dim NetStream As NetworkStream
Try
'Dim TcpClient As New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
Tcpclient.Connect(IPAddress, Integer.Parse(port))
Tcpclient.ReceiveTimeout = 5000
Tcpclient.SendTimeout = 5000
'AlinanBytelar = New Byte(Tcpclient.ReceiveBufferSize) {}
NetStream = Tcpclient.GetStream()
Form1.BaglantiDurumu = True
Form1.Label_BagDurum.ForeColor = Color.Green
Form1.Label_BagDurum.Text = "Bağlandı"
Dim TcpStreamWriter As New StreamWriter(NetStream)
'uzunluk = TcpClient.ReceiveBufferSize
TcpStreamWriter.AutoFlush = True
TcpStreamWriter.WriteLine("DataOku")
NetStream.Read(GelData, 0, CInt(Tcpclient.ReceiveBufferSize))
NetStream.Close()
TcpStreamWriter.Close()
Tcpclient.Close()
Catch ex As System.Exception
Form1.BaglantiDurumu = False
Form1.Label_BagDurum.ForeColor = Color.Red
Form1.Label_BagDurum.Text = "Bağlı Değil"
Dim i As Integer
For i = 0 To 8192
GelData(i) = 0
Next
End Try
End Sub
End Class
url=http://bit.ly/c25MCx](http://e1301.hizliresim.com/15/z/jlhct.jpg)[/url[/img]
Hepsin Aynı prosedür ün için alınca problem yok. Bu durumda ikide bir bağlanma olayaı sonrası zaman kaybını önlemek istemiştim.
Üzgünüm şuan çok zamanım olmadığı için detaylı yazamıyorum.
Örneği incelerseniz sevinirim, olmazsa gece bi ara yazarım.
http://msdn.microsoft.com/tr-tr/library/system.net.sockets.tcpclient.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2 (http://msdn.microsoft.com/tr-tr/library/system.net.sockets.tcpclient.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2)
İlgiliniz için teşekürler.Verdiğiniz linki daha önce bakmıştım .Bu nesne olayını ben tam kavrayamadım.