真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

vb.net互傳通訊 vb tcp通訊

VB.NET窗體間的數(shù)據(jù)傳遞

在編寫VB.Net windows應(yīng)用程序的時(shí)候我們經(jīng)常會(huì)遇到這種問題,怎么樣在兩個(gè)窗體間傳遞數(shù)據(jù)呢?例如,用VB.Net做一個(gè)文本編輯器,里面有一個(gè)搜索功能(即搜索我打開的文本里面的文字),點(diǎn)搜索則彈出搜索對(duì)話框,輸入要搜索的內(nèi)容,然后確定,就可以搜索到我打開的文本里面的文字了,這里就用到了兩個(gè)窗體間的相互通信。我查看了相關(guān)的資料想了想,得出一些想法和方法。

目前創(chuàng)新互聯(lián)建站已為成百上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、網(wǎng)站運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、牟定網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

也許有的人會(huì)覺得這個(gè)很簡(jiǎn)單呀。假如主框架為Form1,打開的搜索對(duì)話框是Form2.直接在Form2類中申明一個(gè)Form1實(shí)例:dim f1 as new Form1然后就可以通過f1來調(diào)用Form1中的域和函數(shù)了。其實(shí)不是這樣的,你申明的新的Form1實(shí)例不是原來的那個(gè)Form1對(duì)象了,這樣操作的是新的Form1中的域和函數(shù),和最先打開的Form1是沒有關(guān)系的。

那應(yīng)該如何來完成兩個(gè)窗體的通訊呢?我們要做的是把當(dāng)前的Form1實(shí)例傳遞給Form2,如果是這樣的話,問題就很好解決了。

方法1:首先,我們?cè)贔orm2中定義:

Private mF_Form As Form1

我們更改Form2的構(gòu)造函數(shù)為有參數(shù)的

Public Sub New(ByVal form As Form1)

MyBase.New()

'該調(diào)用是 Windows 窗體設(shè)計(jì)器所必需的。

InitializeComponent()

Me.mF_Form = form

'在 InitializeComponent() 調(diào)用之后添加任何初始化

End Sub

在Form1中,我在 要用到Form2的地方申明如下:

Dim f1 As New Form2(Me)

這里的me指的就是Form1當(dāng)前的實(shí)例,也就是把當(dāng)前Form1的實(shí)例通過Form2的構(gòu)造函數(shù)傳遞給Form2類(其實(shí)在網(wǎng)上看到過比較蠢的方式,就是在構(gòu)造函數(shù)里面?zhèn)鬟f要傳遞的信息如:字符串或是數(shù)字等,這樣做很有局限性,不能傳遞其他的,所有我們可以直接傳遞實(shí)例,來完成傳遞更多的信息。)

這樣在Form2中使用myForm 就可以對(duì)原來的Form1窗口進(jìn)行操作了。但是你要把要操作的Form1中的域和函數(shù)定義成public形式的(這樣可能不安全),此時(shí)的myForm就是真正的最開始打開的Form1了,你可以用這個(gè)實(shí)例來進(jìn)行兩個(gè)窗體的通訊了。

方法2:其實(shí)VB.Net中提供了窗體間進(jìn)行通訊的現(xiàn)成的屬性,呵呵,我們能想到的,微軟也想到了,他們創(chuàng)造的語言其實(shí)確實(shí)可以說是人性化了。

在Form1類中申明Form2時(shí)用如下代碼:

Dim f2As New Form2 '類Form2中的構(gòu)造函數(shù)不改,還是無參的

f2.owner=me

也可以使用函數(shù)的方法,給當(dāng)前實(shí)例添加一個(gè)附屬窗口 代碼:Me.AddOwnedForm(f2)

在Form2類的定義中寫如下代碼:

dim f1 as Form1=me.owner

這樣f1對(duì)應(yīng)的就是原來的Form1的實(shí)例了,也就可以用這個(gè)進(jìn)行通訊了。但是還是要把不同類之間訪問的域和函數(shù)定義成public,哎,安全確實(shí)是一個(gè)問題??!

VB與VB.NET串口及以太網(wǎng)通迅

關(guān)于串口通訊的問題:

很明顯,你還不知道(不會(huì)、不習(xí)慣)使用事件驅(qū)動(dòng)的方式接收數(shù)據(jù)。

建議你仔細(xì)看看串口組件(無論VB6還是VB.net)的OnComm事件,你的問題很容易解決。

關(guān)于以太網(wǎng)通訊:

在TCP通訊中端口確實(shí)可以重用,你百度一下“TCP端口重用”能查到很多示例。

但絕大多數(shù)情況下不推薦端口重用,而應(yīng)該采取服務(wù)器端建立連接池的方法。

或者,干脆不用TCP,用UDP解決也可以。

VB.NET與PHP通訊問題

與語言沒有關(guān)系, 你需要考慮的是兩個(gè)系統(tǒng)直接如何通訊. 選一種通訊協(xié)議(一般用http協(xié)議), 設(shè)計(jì)好數(shù)據(jù)結(jié)構(gòu), 可以是xml或json. 假設(shè)選用http協(xié)議傳輸json數(shù)據(jù). 你需要做以下工作:

使用php開發(fā)一個(gè)http接口, 根據(jù)參數(shù)查詢數(shù)據(jù)庫, 把結(jié)果轉(zhuǎn)換為json格式后返回. 這是目前最流行的接口格式, 基本上所有語言都可以開發(fā)和請(qǐng)求這樣的接口, 很多開放平臺(tái)都是這樣設(shè)計(jì)接口的, 例如微信的這個(gè)接口,你可以參考一下?網(wǎng)頁鏈接

使用VB.NET請(qǐng)求這個(gè)接口, 獲取返回的數(shù)據(jù)(json格式, 一個(gè)特殊的字符串), 使用VB.NET對(duì)json數(shù)據(jù)進(jìn)行解碼

所以,要完成這個(gè)工作,你需要知道http接口開發(fā)和請(qǐng)求, 以及json編碼和解碼的相關(guān)知識(shí)和技能, 祝你好運(yùn)

用vb.net實(shí)現(xiàn)網(wǎng)絡(luò)通信

用 vb.net socket通信

Dim th As Threading.Thread

2 Dim tcpl As System.Net.Sockets.TcpListener

3

4 Private Sub Form1_Load()Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

5 th = New System.Threading.Thread(New System.Threading.ThreadStart(AddressOf MyListen))

6 th.Start()

7 End Sub

8

9 Public Sub SendMessage()Sub SendMessage(ByVal IP As String, ByVal SendMsg As String)

10 Try

11 If IP "" Then

12 Dim tcpc As New System.Net.Sockets.TcpClient(IP, 5656)

13 Dim tcpStream As Net.Sockets.NetworkStream = tcpc.GetStream

14 Dim reqStream As New IO.StreamWriter(tcpStream)

15 reqStream.Write(SendMsg)

16 reqStream.Flush()

17 tcpStream.Close()

18 tcpc.Close()

19 End If

20 Catch ex As Exception

21 MsgBox(ex.Message.ToString)

22 End Try

23 End Sub

24 Private Sub MyListen()Sub MyListen()

25 Try

26 Dim ipAddress As System.Net.IPAddress = System.Net.Dns.Resolve(System.Net.Dns.GetHostName).AddressList(0)

27 tcpl = New System.Net.Sockets.TcpListener(ipAddress, 5656)

28 tcpl.Start()

29 While True

30 Dim s As System.Net.Sockets.Socket = tcpl.AcceptSocket()

31 Dim MyBuffer(1024) As Byte

32 Dim i As Integer

33 i = s.Receive(MyBuffer)

34 If i 0 Then

35 Dim lstrRec As String

36 Dim j As Integer

37 For j = 0 To i - 1

38 TextBox1.Text += Chr(MyBuffer(j)) ","

39 Next

40 End If

41 End While

42 Catch ex As Exception

43 MsgBox(ex.Message.ToString)

44 End Try

45 End Sub

46

47 Private Sub Button1_Click()Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

48 SendMessage("192.168.0.61", TextBox2.Text)

49 End Sub


文章題目:vb.net互傳通訊 vb tcp通訊
網(wǎng)頁地址:http://weahome.cn/article/hisjds.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部