• 締切済み

vb.netのプロパティの使い方について

こんにちわ! vb.netのプロパティの使い方がわからず困っています。 具体的にはTCPクライアント接続を行い、データ送信前に現在接続を行っているかチェックを行いたいです。 作ったのは↓ Public Class Form1 'ボタンを押したら Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim tcp_conect As New System.Net.Sockets.TcpClient 'ソケット作成 Dim net_stream As System.Net.Sockets.NetworkStream = Nothing 'ストリーム取得 Dim send_bytes As Byte() = {&HFF, &H0} '送信データ tcp_conect.Connect("192.168.1.1", "2000") 'ソケット接続 net_stream = tcp_conect.GetStream() 'ソケットストリーム取得 If tcp_conect.conected = True Then 'エラーが出てしまう。 net_stream.Write(send_bytes, 0, send_bytes.Length) 'データ送信 End If tcp_conect.Close() 'ソケット閉じる End Sub End Class 'プロパティ Public Class TcpClient Dim _conect_test As Boolean Public ReadOnly Property Connected As Boolean Get Stop Return _conect_test End Get End Property End Class これでテストをしたいのですが、プロパティが実行されません。 もしかしてプロパティの使い方がそもそも違うのかもしれないのですが、、、 アドバイスのほどよろしくお願いいたします。 ちなみに使用しているのは windows7 Visual Studio Express 2012です。

みんなの回答

  • yhc3594
  • ベストアンサー率27% (25/92)
回答No.1

Public ReadOnly Property Connected As Boolean内 1.Stop・・・中断します。 2.Return _conect_test・・・「_conect_test」は不定(値がセットされていません) 実際には接続成功時に「_conect_test」をtrueにしないと完成しませんが、とりあえず エラーとなる要因は1.2.と思われます。 「_conect_test」は初期値としてfalseを代入しましょう。

osarusan0214
質問者

お礼

良く分かりませんが、解凍ありがとうございます。

osarusan0214
質問者

補足

ということは、propartyの使い方事態は間違ってないってことですか?

関連するQ&A

  • VB.netのタイムアウト方法について

    こんばんわ。 vb.netのTCP接続に関する質問になります。 Dim tcp_conect As New System.Net.Sockets.TcpClient(host, port) これを使用して接続しようと思うのですが、 エラー時やサーバに接続できないときのタイムアウト時間が長すぎるため、設定したいのですが、どのようにすればよいでしょうか? サンプルコードかURLのご紹介をお願いいたします。 もちろんこれ以外の方法でも構いません。 よろしくお願いいたします。 環境はWin7・vb.net2012 Expressになります。

  • 次のVB.netのコードをC#で書くには?

    以下のようなVB.netのコードをC#で書く場合、どのように書けばよいのでしょうか? ・Class1とClass2は同じメソッド、プロパティを持つ ・Class1とClass2は提供されたものなので変更することができない 環境はVisualStudio2005です。 --------------------- Dim blnFlg As Boolean = True Dim objClass As Object If blnFlg = True Then objClass = New Class1 Else objClass = New Class2 End If 'ここから無数のメソッド、プロパティを呼び出す objClass.TestMethod() objClass.TestProperty()

  • クラス内に自作のイベントを定義したい VB2005

    VB2005を使っています。 クラス内に自作のイベントを定義したいのですがどうすればよいのでしょうか? 非同期のソケットから帰ってきた場合に発生させるイベントです。 System.Net.Sockets.TcpClient System.Net.Sockets.NetworkStream 以下のようにループでなくイベントで処理させたいです。 Do If .DataAvailable Then             ... End If My.Application.DoEvents() Loop

  • VB.NETで出来てC#で出来ない???

    VB.NETでは出来るのにC#で同じようにするやり方がわからなくて困っています。 VSのバージョンは2008です。 やりたいことは 『param.Item("AAA") = "111"』 このように書けるクラスを作りたいのですが、 VBで出来てC#では出来ないのでしょうか? イメージとしてはプロパティにメソッドをくっつけたようなクラス? C#ではこのように書くとエラーになります。 どのようにしたらいいでしょうか? public string Item(string Key) {  set { _param[Key] = value; } } VB Dim param As New Param() param.Item("AAA") = "111" ----Paramクラス---- Imports System.Text Public Class Param Private _Hash As New Hashtable Default Public Property Item(ByVal Key As String) As String Get Return _Hash(Key) End Get Set(ByVal value As String) _Hash(Key) = value End Set End Property End Class ---------

  • VB2005で作ったメール送信プログラムで、メール本文が文字化けしてしまいます。

    VB2005でメール送信プログラムを作ったのですが、送信したBODYが文字化けしてしまいます。どう修正すればよいか、教えてください。 以下がそのコードです。 Imports System.Net.mail Public Class Form1 Private Sub ToolStripButton1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton1.Click Dim tc As Sockets.TcpClient Dim ns As Sockets.NetworkStream Dim stat As String Dim mailData As String Dim mailFrom As String = "", mailSubject As String = "", mailBody As String = "" Dim r As Regex Dim m As Match Dim mailCount As Integer Try tc = New Sockets.TcpClient() tc.Connect(txtPOP3Server.Text, 110) ns = tc.GetStream Dim buff(tc.ReceiveBufferSize) As Byte ns.Read(buff, 0, tc.ReceiveBufferSize) POP3Transmit(ns, "USER " & txtUserName.Text, False) POP3Transmit(ns, "PASS " & txtPassword.Text, False) stat = POP3Transmit(ns, "STAT", False) r = New Regex("\+OK (.*) (.*)") m = r.Match(stat) mailCount = Val(m.Groups(1).Value) If mailCount = 0 Then MsgBox("メールはありません") Else mailData = POP3Transmit(ns, "RETR " & mailCount, True) ParseMail(mailData, mailFrom, mailSubject, mailBody) txtBody.Text = mailBody txtFrom.Text = mailFrom txtSubject.Text = mailSubject End If Dim smtpClt As New Net.Mail.SmtpClient("smtp.mail.yahoo.co.jp", 25) Dim from As String = "****@yahoo.co.jp" Dim toYou As String = DataGridView1(1, 0).Value Dim subject As String = TextBox2.Text Dim body As String = TextBox1.Text Try smtpClt.Send(from, toYou, subject, body) Timer2.Enabled = True ToolStripStatusLabel2.Text = "送信しました。" Catch ex As Exception MessageBox.Show(ex.Message) End Try POP3Transmit(ns, "QUIT", False) ns.Close() tc.Close() Catch ex As Exception MsgBox("メールの受信に失敗しました") End Try End Sub End Class

  • VB2010 のユーザコントロールのプロパティ

    お世話になっております Windows7、VB2010 Expless で開発しております 後にVS2010のVBに移行する予定です ユーザコントロールでテキストボックスを作っております そこで、初期値を設定しようと思い設定をしたのですが反映されません Imports System.ComponentModel <DefaultValue(True)> Public Property Chk_Num() As Boolean Set(ByVal value As Boolean) If (value = True) Then blnChk_Num = value Else blnChk_Num = value End If End Set Get Return blnChk_Num End Get End Property <System.ComponentModel.DefaultValueAttribute(1)> Public Property Chk_ZenHankaku() As Integer Set(ByVal value As Integer) If (value >= 0 And value <= 2) Then '0以上2以下 blnChk_ZenHankaku = value Else 'マイナス、または3以上の場合は0にする blnChk_ZenHankaku = 0 End If End Set Get Return blnChk_ZenHankaku End Get End Property どちらの方法でも、Booleanの場合は「False」、Integerの場合は「0」になってしまいます また、初期化~プロパティ宣言間に、改行しても改行しなくても結果は同じです どうにか設定できる方法はありますでしょうか よろしくお願いします

  • VB.NETのデリゲートについて

    VB.NETのデリゲートについて質問です。 以下のプログラムなのですが、 デリゲート型をインスタンス化しているところで、コンストラクタにパラメータを渡していますが、 そのコンストラクタはどこに定義されているのでしょうか。 (AddressOf t1.Ohayou)というパラメータが渡されていますが、このパラメータを受け取っているコンストラクタがどれなのかが分かりません。 ご教示よろしくお願いいたします。 Delegate Sub Myprint(ByVal s As String) Module Module1 Sub Main() Dim t1 As Test1 = New Test1() Dim t2 As TEst2 = New Test2() Dim d As Myprint = New Myprint(AddressOf t1.Ohayou) d.Invoke("VB太郎") d = New Myprint(AddressOf t2.Konbanwa) d.Invoke("VB太郎") End Sub End Module Class Test1 Sub Ohayou(ByVal s As String) Console.WriteLine("おはようございます。{0}です。", s) End Sub End Class Class Test2 Sub Konbanwa(ByVal s As String) Console.WriteLine("こんばんわ。{0}です。", s) End Sub End Class

  • エクセルのマクロでクラスのプロパティについて

    エクセルでセルがダブルクリックされたら フォームを表示し、フォーム内のリストボックス のクリック時の値をクラスのプロパティに実装 できるのでしょうか? 以前、仕事でそのようなクラスを呼び出して 使ったことがあるので。 エクセル側 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Dim cls As New Class1 ' cls.ListSet ' End Sub ↑フォームの表示まで クラスモジュール Option Explicit Public listVal As String Public Function ListSet() As Boolean ' On Error GoTo ErrFunc ' ListSet = True ' With UserForm1 With .ListBox1 .AddItem "a" .AddItem "b" .AddItem "c" End With ' .Show ' End With ' Exit Function ' ErrFunc: ListSet = False End Function Public Property Let val(ByVal data As String) listVal = data End Property Public Property Get val() As String val = listVal End Property フォーム側のListBox1_Clickで どうすればよいか分からなくなりました。 根本的に間違っているのでしょうか? ネットでさがしたのですが参考になる サイトが見つかりません。 解決方法、宜しくお願い致します。

  • Sockets.TcpClient プログラミング

    初めて質問するので、作法等に誤りがあるかもしれませんがどうぞよろしくお願いします。 【環境等】 OS:Windows2007 64bit 言語:Visual Stadio 2008 (Framework2.0用で開発)のVB.net 【やりたいこと】 Sockets.TcpClientを使用して自PC上で自PC宛てに通信を行いたい 【解決したい内容】 実行時にファイアウォールのブロック警告をでないようにしたい。 ・初回実行でアクセス許可を行ったあと、アプリを別フォルダに移して実行すると再度警告がでる ・下記自作PGの抜粋 Dim objSck As Sockets.TcpClient Dim objStm As Sockets.NetworkStream Dim myTcpClient As Sockets.TcpClient = myListener.AcceptTcpClient() objSck = myTcpClient objStm = myTcpClient.GetStream() 以上 解決方法をご存じの方はご教示いただければ幸いです。 よろしくお願い致します。

  • VB.NETのメモリ領域について

    VB.NETのメモリ領域について 以下の(1)~(12)の変数のために、 スタック領域、静的領域、ヒープ領域のどこのメモリが使われるか教えてください。 Class Sample   Dim a As Integer '(1)   Dim b As String = "BBB" '(2)   Shared c As Integer '(3)   Shared d As String = "DDD" '(4)   Sub X()     Dim f As Integer '(5)     Dim g As String = "GGG" '(6)     Static h As Integer '(7)     Static i As String = "III" '(8)   End Sub   Shared Sub Y()     Dim k As Integer '(9)     Dim l As String = "LLL" '(10)     Static m As Integer '(11)     Static n As String = "NNN" '(12)   End Sub End Class それぞれこんな認識で合ってますか? スタック領域 (1)(5)(9) スタック領域にポインタ+ヒープ領域に実体 (2)(6)(10) 静的領域 (3)(7)(11) 静的領域にポインタ+ヒープ領域に実体 (4)(8)(12)

専門家に質問してみよう