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

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

vb點(diǎn)虐 建立聊天工具 vbnet socket編程

如何用VB點(diǎn)虐 作的網(wǎng)絡(luò)聊天工具

很復(fù)雜的,而且聊天工具都不是用VB 做的

公司主營(yíng)業(yè)務(wù):網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出渾江免費(fèi)做網(wǎng)站回饋大家。

只是可視化好點(diǎn)

用VB只是可以做一個(gè)界面看看

具體的不用的,,,,

JAVA

VB如何實(shí)現(xiàn)傳輸語音和文件,我想做個(gè)聊天工具

傳輸語音和文件都可以通過Mswinsock 實(shí)現(xiàn),只是速度方面我沒有試過,我正巧最近也弄了點(diǎn)Mswinsock 相關(guān)的東西,代碼發(fā)給你看看,希望有幫助

傳送文件對(duì)于網(wǎng)絡(luò)編程來說是基本的功能,比如遠(yuǎn)程控制軟件。在編制一個(gè)軟件時(shí),我從網(wǎng)上下了很多傳文件的程序,這些程序提供的傳文件功能根本就不能用。傳文本還可以,傳二進(jìn)制文件根本就不行。因此,作為一個(gè)基本的功能模塊,有必要單獨(dú)介紹一下。

首先,在VB中要傳送字符串,你可以這樣寫:

Dim strData As String

strData = "Test"

Winsock1.SendData strData

但是如果你傳送的二進(jìn)制文件,你還能用String變量來存放嗎?從理論上分析是不行的,我也做了實(shí)驗(yàn),確實(shí)是不行的。文件雖然可以傳,但是接受的文件和發(fā)送的不一樣,原因可能是二進(jìn)制文件里可以有任何"字符",但是不是所有的字符都可以放在String變量里。

除了String類型的變量,VB中其他類型的變量都只有幾個(gè)字節(jié)長(zhǎng),難道一次只能發(fā)幾個(gè)字節(jié)嗎?那樣豈不是要累死機(jī)器了!其實(shí),情況沒有那么悲觀,我們完全可以使用數(shù)組來解決這個(gè)問題,就是使用byte數(shù)組。把要傳送的文件都讀到數(shù)組里,然后發(fā)送出去。程序如下:

FileName 為要傳送的文件名,WinS為發(fā)送文件的WinSock控件。這是一個(gè)發(fā)送端的程序。

Public Sub SendFile(FileName As String, WinS As Winsock)

Dim FreeF As Integer ''空閑的文件號(hào)

Dim LenFile As Long ''文件的長(zhǎng)度

Dim bytData() As Byte ''存放數(shù)據(jù)的數(shù)組

FreeF = FreeFile ''獲得空閑的文件號(hào)

Open FileName For Binary As #FreeFile ''打開文件

DoEvents

LenFile = LOF(FreeFile) ''獲得文件長(zhǎng)度

ReDim bytData(1 To LenFile) ''根據(jù)文件長(zhǎng)度重新定義數(shù)組大小

Get #FreeFile, , bytData ''把文件讀入到數(shù)組里

Close #FreeFile ''關(guān)閉文件

WinS.SendData bytData ''發(fā)送數(shù)據(jù)

End Sub

接受端的程序如下:

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Dim bytData() As Byte

Dim f

f = FreeFile

Open strFileName For Binary As #f

ReDim bytData(1 To bytesTotal)

Winsock1.GetData bytData

Put #f, i, bytData

i = i + bytesTotal ''保證每次寫都是在文件的末尾, i是個(gè)全局變量

Close #f

End Sub

這里有兩個(gè)需要注意的地方,ReDim Preserve bytData(1 To LenFile),下標(biāo)是從1開始的,如果你寫成ReDim bytData( LenFile),下標(biāo)就是從0開始了,數(shù)組就有LenFile+1長(zhǎng)了。LenFile = LOF(FreeFile)中的LOF是獲得文件長(zhǎng)度的函數(shù),是VB里帶的,我見過很多例子用API,或者循環(huán)的讀直到末尾來獲取文件長(zhǎng)度,這樣都是很麻煩的,使用LOF函數(shù)就可以了。

這樣的程序,即可以傳送文本文件,也可以傳送二進(jìn)制文件。但是你有沒有發(fā)現(xiàn)這個(gè)程序的問題呢?如果我要傳送一個(gè)50M的文件呢?系統(tǒng)可以為bytData分配50M的內(nèi)存空間嗎?

于是筆者拿一個(gè)50M的文件做實(shí)驗(yàn)吧,接收到的文件和原來的文件不一樣,比原來的大。問題出在那呢?

首先,根據(jù)文件大小重新定義bytData數(shù)組的大小本身就有問題,系統(tǒng)是不可能無限制的給數(shù)組分配空間的,即使可以,也會(huì)造成系統(tǒng)響應(yīng)變慢。在傳50M文件的時(shí)候,系統(tǒng)就跟死機(jī)了一樣。那么怎么解決這個(gè)問題呢,一個(gè)自然的想法就是把數(shù)據(jù)分段傳送。程序如下:

發(fā)送程序, iPos是個(gè)全局變量,初始值為0。這個(gè)變量保存著當(dāng)前數(shù)據(jù)的位置。Const iMax = 65535是每個(gè)數(shù)據(jù)塊的大小。

Dim FreeF As Integer ''空閑的文件號(hào)

Dim LenFile As Long ''文件的長(zhǎng)度

Dim bytData() As Byte ''存放數(shù)據(jù)的數(shù)組

FreeF = FreeFile ''獲得空閑的文件號(hào)

Open FileName For Binary As #FreeF ''打開文件

DoEvents

LenFile = LOF(FreeF) ''獲得文件長(zhǎng)度

If LenFile = iMax Then ''如果要發(fā)送的文件小于數(shù)據(jù)塊大小,直接發(fā)送

ReDim bytData(1 To LenFile) ''根據(jù)文件長(zhǎng)度重新定義數(shù)組大小

Get #FreeF, , bytData ''把文件讀入到數(shù)組里

Close #FreeF ''關(guān)閉文件

WinS.SendData bytData ''發(fā)送數(shù)據(jù)

Exit Sub

End If

''文件大于數(shù)據(jù)塊大小,進(jìn)行分塊發(fā)送

Do Until (iPos = (LenFile - iMax)) ''發(fā)送整塊數(shù)據(jù)的循環(huán)

ReDim bytData(1 To iMax)

Get #FreeF, iPos + 1, bytData

WinS.SendData bytData

iPos = iPos + iMax ''移動(dòng)iPos,使它指向下來要讀的數(shù)據(jù)

Loop

''這里要注意的是,必須檢查文件有沒有剩下的數(shù)據(jù),如果文件大小正好等于數(shù)據(jù)塊大小的

'' 整數(shù)倍,那么就沒有剩下的數(shù)據(jù)了

ReDim bytData(1 To LenFile - iPos) ''發(fā)送剩下的不夠一個(gè)數(shù)據(jù)塊的數(shù)據(jù)

Get #FreeF, iPos + 1, bytData

WinS.SendData bytData

Close #FreeF

下面是接收端的程序:

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Dim bytData() As Byte

Dim lLenFile As Long

Dim f

f = FreeFile

Open strFileName For Binary As #f ''strFileName是文件名

lLenFile = LOF(f)

ReDim bytData(1 To bytesTotal)

Winsock1.GetData bytData

If lLenFile = 0 Then ''lLenFile=0表示是第一次打開文件,這里有個(gè)問題,就是''如果如果該文件存在的話,就會(huì)出錯(cuò),應(yīng)該在打開前檢查文件是否存在。(這里我省略了)

Put #f, 1, bytData

Else

Put #f, lLenFile + 1, bytData

End If

Close #f

End Sub

VB.NET中能否做一個(gè)像QQ那樣的聊天框,可以輸入文字和圖片?

第一個(gè)問題 qq聊天室 必須能 用vb都可以做

第二個(gè)問題 vb點(diǎn)虐 插入數(shù)學(xué)公式 可以把這些公式封裝到一個(gè)類中,調(diào)用就是了

VB編寫的局域網(wǎng)聊天工具源代碼

用VB做聊天程序的方法

---- 所謂"聊天"是指兩個(gè)程序能夠發(fā)送數(shù)據(jù)給對(duì)方。這個(gè)程序涉及到數(shù)據(jù)通訊的知識(shí),仿佛很復(fù)雜,不過,由于VB給我們提供了一個(gè)Winsock控件,問題就變得很簡(jiǎn)單了。

---- 先編寫"聊天(主機(jī))"程序。在窗體里添加Winsock控件,并設(shè)置其Protocol屬性為1-SckUDPProtocol,其他屬性為缺省值。接著添加兩個(gè)標(biāo)簽和兩個(gè)文本框,設(shè)置兩個(gè)標(biāo)簽的標(biāo)題屬性分別為"接收窗"和"發(fā)送窗";兩個(gè)文本框的標(biāo)題屬性為空。最后編寫代碼:

---- 1."聊天(主機(jī))"

Private Sub Form-Load()

′設(shè)置網(wǎng)絡(luò)地址

Winsock1.LocalPort=1024

Winsock1.RemoteHost="202.96.6.1"

Winsock1.RemotePort=1999

End Sub

Private Sub Text1-Change()

′發(fā)送用戶輸入的內(nèi)容

Winsock1.SendData Text1.Text

End Sub

Private Sub Winsock1-DataArrival

(Byval bytesTotal As Long)

Dim rec As String

′接收對(duì)方數(shù)據(jù)并在文本框內(nèi)顯示

Winsock1.GetData rec, vb String

Text2.Text=rec

End Sub

---- 2."聊天(副機(jī))"

Private Sub Form_Load()

′設(shè)置網(wǎng)絡(luò)地址

Winsock1.LocalPort=1999

Winsock1.RemoteHost="202.96.6.1"

Winsock1.RemotePort=1024

---- 其他部分程序與(主機(jī))相同。最后將兩個(gè)程序存盤,并編譯成執(zhí)行(.Exe)文件?,F(xiàn)在就可以使用這個(gè)程序進(jìn)行對(duì)話了。

---- 七.文本框中文本的某一特定字符或字符串同時(shí)高亮顯示的方法

---- 由于普通TextBox控件不支持不連續(xù)字符串的同時(shí)高亮顯示,所以我們選擇RichTextBox控件。單擊工程(Project)選單項(xiàng),在彈出的下拉選單中單擊組件(Components)選單項(xiàng),從彈出的對(duì)話框中選擇Microsoft Rich Textbox Control 5.0復(fù)選框,確定加載RichTextBox控件。

---- 新建(New)一個(gè)工程,在窗體(Form)上添加一個(gè)RichTextBox控件和兩個(gè)Command(按鈕)控件,都采用系統(tǒng)默認(rèn)的Name屬性值;設(shè)置RichTextBox的Text屬性值為空,Command1和Command2的Caption屬性值分別設(shè)為"輸入文本"和"選擇字符串"。最后,添加如下VB代碼:

Private Sub Command1-Click()

Dim str As String

Dim Text As String

str=〃輸入文本〃

Text=InputBox(str)

RichTextBox1.Text=Text

End Sub

Private Sub Command2-Click()

Dim str As String

Dim Text As String

Dim Position As Integer

Dim Lenth As Integer

str=〃輸入要高亮顯示的字符串〃

Text=InputBox(str)

If Text 〈〉 〃〃 Then

Position=InStr(RichTextBox1.Text, Text)-1

Lenth=Len(Text)

RichTextBox1.SelStart=Position

RichTextBox1.SelLength=Lenth

RichTextBox1.SelColor=RGB(255,0,0)

Do While InStr(Position+Lenth+

1, RichTextBox1.Text, Text) 〈〉 0

Position=InStr(Position+Lenth+

1, RichTextBox1.Text, Text)-1

RichTextBox1.SelStart=Position

RichTextBox1.SelLength=Lenth

RichTextBox1.SelColor=RGB(255,0,0)

Loop

End If

End Sub

---- 按F5執(zhí)行程序,單擊"輸入文本"按鈕,在彈出的對(duì)話框中輸入一些文本,確定后,剛剛輸入的文本將顯示在RichTextBox中;再單擊"選擇字符串"按鈕,在彈出的對(duì)話框中輸入你希望高亮顯示的字符串,確定后,RichTextBox中相應(yīng)的字符串將以紅色高亮顯示。

---- 八.編程實(shí)現(xiàn)Windows 95/98操作系統(tǒng)熱啟動(dòng)的方法

---- 要利用程序?qū)崿F(xiàn)系統(tǒng)的重新啟動(dòng),可以在你的程序中調(diào)用API函數(shù)來實(shí)現(xiàn)。建一個(gè)子函數(shù):(以VB為例)

Declare Function SystemParametersInfo Lib 〃

user32〃 Alias -

〃SystemParametersInfo〃 (ByVal uAction As Long,

ByVal uParam As Long,

ByVal lpvParam As Any, ByVal

fuWinIni As Long) As Long

Sub DisableCtrlAltDelete(bDisabled As Boolean)

Dim X As Long

X=SystemParametersInfo(97, bDisabled, CStr(1), 0)

End Sub

Call DisableCtrlAltDelete(true) ′禁止熱啟

Call DisableCtrlAltDelete(false) ′允許熱啟

---- 九.在Windows 95/ 98啟動(dòng)后自動(dòng)啟動(dòng)程序的方法

---- 我們都知道在Windows 95/98的"開始"→"程序"選單下有一"啟動(dòng)"選單項(xiàng),當(dāng)每次啟動(dòng)Windows 95或Windows 98時(shí),系統(tǒng)都會(huì)自動(dòng)啟動(dòng)放在"啟動(dòng)"選單欄里的可執(zhí)行程序。

---- 但目前有好多軟件,像解霸五、ICQ,以及大部分實(shí)時(shí)偵測(cè)病毒的軟件等等,安裝后,并沒有放在"啟動(dòng)"選單里,也能在啟動(dòng)操作系統(tǒng)時(shí)自動(dòng)啟動(dòng)。怎么實(shí)現(xiàn)的呢?

---- 其實(shí)只要知道Windows注冊(cè)表的一些知識(shí),這個(gè)問題就不能稱之為問題了。用鼠標(biāo)單擊"開始",打開開始選單,再單擊"運(yùn)行",出現(xiàn)一對(duì)話框,然后輸入"regedit",確定后,會(huì)打開系統(tǒng)注冊(cè)表編輯器,找到HKEY-LOCAL-MACHINE? SOFTWARE?Microsoft?Windows?CurrentVersion?Run,加入你的程序的入口,就可以了。如果不知道怎么加,就參考一下已經(jīng)存在的鍵值。

---- 十. 如何把數(shù)據(jù)文件輸出到Text控件中?如果數(shù)據(jù)量比較大,窗體滿屏也不夠大,怎么解決?

---- 有一個(gè)比較簡(jiǎn)單的方法,就是把數(shù)據(jù)放到一個(gè)文本框(Text)里,并在其中加上水平和垂直滾動(dòng)條。具體實(shí)現(xiàn)步驟為:先在窗體(Form)里加入一個(gè)文本框,采用默認(rèn)名Text1;然后,設(shè)置文本框Text1的屬性:Text屬性設(shè)置為空,MultiLine屬性設(shè)置為True,ScrollBars屬性設(shè)置為3-Both;接著添加如下VB代碼:

Private Sub Form-Load()

Dim Handle As Integer

Dim FileName As String

On Error GoTo ErrExit

begin:

′輸入要顯示的數(shù)據(jù)文件的名稱

FileName=InputBox$(〃Input Filename〃,

〃Open File〃)

On Error GoTo FileErr

Handle=FreeFile

Open FileName For Input As #Handle

′把數(shù)據(jù)文件中的數(shù)據(jù)輸出到文本框中

Text1.Text=Input$(LOF(Handle), Handle)

Close #Handle

Exit Sub

FileErr:

Dim ErrNum As Integer

If Err.Number=53 Then

ErrNum=MsgBox(〃File not exist〃,

vbOKCancel, 〃Error Information〃)

If ErrNum=1 Then

GoTo begin

Else

Exit Sub

End If

End If

MsgBox Err.Description, , 〃file open failed〃

ErrExit:

Exit Sub

End Sub

′使文本框充滿整個(gè)窗體

Private Sub Form-Resize()

Text1.Left=0

Text1.Top=0

Text1.Width=Form1.Width-100

Text1.Height=Form1.Height-400

End Sub

---- 通過這樣的處理,不僅能解決問題,而且用戶還可以在文本框中對(duì)數(shù)據(jù)進(jìn)行編輯。

---- 十一.關(guān)聯(lián)文件列表框、目錄列表框和驅(qū)動(dòng)器列表框的方法

---- 想做一個(gè)對(duì)話窗體,包含驅(qū)動(dòng)器列表框、目錄列表框和文件列表框,并能實(shí)現(xiàn)三者的同步操作,怎么做?這都是我們?cè)趯?shí)際應(yīng)用中經(jīng)常會(huì)遇到的問題,在VB中解決這個(gè)問題非常簡(jiǎn)單,可以通過Path屬性的改變引發(fā)Change事件來實(shí)現(xiàn)。例如:

Sub Dir1-Change()

File1.Path=Dir1.Path

End Sub

---- 該事件過程使窗體上的目錄列表框Dir1和文件列表框File1產(chǎn)生同步。因?yàn)槟夸浟斜砜騊ath屬性的改變將產(chǎn)生Change事件,所以在Dir1-Change事件過程中,把Dir1.Path賦給File1.Path,就可以產(chǎn)生同步效果。類似地,增加下面的事件過程,就可以使三種列表框同步操作:

Sub Drive1-Change()

Dir1.Path=Drive1.Drive

End Sub

---- 該過程使驅(qū)動(dòng)器列表框和目錄列表框同步,前面的過程使目錄列表框和文件列表框同步,從而使三種列表框同步,問題即可解決。


網(wǎng)站標(biāo)題:vb點(diǎn)虐 建立聊天工具 vbnet socket編程
URL標(biāo)題:http://weahome.cn/article/ddgdcji.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部