VB關於WINSOCK的問題

2022-11-16 12:55:14 字數 2243 閱讀 9199

1樓:匿名使用者

我原來參賽寫了一個這樣的程式。**都有。註釋也有,還有檔案傳送的功能

我的**可能你看不懂,因為很久了我可能都看不懂了。我提供下我的思路。

1要是你只需要點對點,或者多個點對點,那麼可以用很普通的方法,就是建立一個winsock的控制元件陣列。每次收到連線請求就增加一個控制元件,監聽埠(我記得好像可以監聽同一個埠)。但是這樣就需要知道別人的ip。

然後每連線一個你就在介面上面出現一個別人的ip,並且在ip邊上設一個checkbox,這樣那個)或者哪幾個)裡面打了勾,資訊就發給他(她,它)(們)。

2.要是是想複雜點,可以採用伺服器的方法。都先和伺服器相連,然後伺服器分別記錄每個人的ip,再傳送給每個客戶端。客戶端可以選擇(至少曉得別人的ip了)就連線。

。。。。。

具體的實現我就先講簡單的那個

建立一個winsock服務端(客戶端也可以,反正要多人連線嘛)

然後受到連線請求後:

private sub win_socka_connectionrequest(index as integer, byval requestid as long)

clientnum = clientnum + 1

load win_sock(clientnum) '載入一個新的socket控制元件

win_sock(clientnum).accept requestid '接受客戶端的請求

win_sock(clientnum).senddata "welcome to this game!"

'載入一個checkbox也可以這樣弄,但是注意index(就是控制元件後面的口號裡面的數字,最好統一一下,因為陣列控制元件都是從0開始的。

然後關於傳送的時候確定傳送給那個(些)。就可以

private sub sen_msg_click()『單擊了傳送按鈕

dim sdata$, nowtime$, texttosd$

nowtime = time()

sdata = myname & "(" & myip & ")" & nowtime & ":" & vbnewline & senmsg.text

for i = 3 to 100『這個是我的程式不完善的地方,我不曉得有多少個人連線了,反正曉得不會有100多個。就這樣弄。你不要學,這是不好的習慣

if not windex(i) = 0 then win_socker(windex(i)).senddata sdata

』如果checkbox是被選中,也就是被打了勾,就傳送資料

next

texttosd = recmsg.text

if texttosd <> "" then

recmsg.text = texttosd & vbnewline & zhujiemian.myname.

text & "(" & myip & ")" & nowtime & ":" & vbnewline & senmsg.text

else: recmsg.text = myip & nowtime & ":" & vbnewline & senmsg.text

end if

senmsg.text = empty『傳送框清空

recmsg.setfocus』受到資訊的文字框(就是聊天的時候別人發過來資訊內容就在這裡面顯示

recmsg.selstart = len(recmsg.text)

recmsg.sellength = 0 '讓游標自動到文件的末尾

senmsg.setfocus

end sub

還是要說,就是因為我寫的程式有bug,所以怕誤了你。不過有一些你還是可以用的。比如檔案傳送什麼的。

註釋也有。希望幫得上,因為原來我也是在網上苦苦尋匿的。雖然不曉得最後是程式執行錯誤還是怎麼的我這個寫了半年的程式只得了一個垃圾獎,不過算了,我畢竟還小。

加油咯。

2樓:

肯定是要個服務端的,服務端是中轉站,服務端把所有連線的ip傳送給客戶端,讓客戶端就收所有的服務端發來的ip,並顯示,當客戶1要向客戶2發資訊時,客戶1在list上選擇ip的時候,此時客戶1先想服務端傳送它選擇的ip(前面+上符號比如* 什麼,讓服務端知道 你要連線的ip),客戶1傳送的訊息服務端接受到後,服務端把客戶1的ip發給客戶2(意思讓客戶2知道是客戶1發給它的),緊接著服務端把剛收到的客戶1的資訊發給客戶2就ok了。

看不懂多看即便就知道了,很簡單的。

3樓:匿名使用者

簡單,記下來,明天給你答,把分留給我,哈哈

關於VB的問題

label中不能加入 建立一個listbox 一個picturebox 一個按鈕 如下 可自動調整大小 來適合 picturebox控制元件大小 picture1.print 廣東人 case 1 picture1.picture loadpicture picture1.print 山東人 cas...

關於VB的小問題,關於VB的一個小問題

有按鈕在flash中 on release 在vb2008 private sub s1 fscommand byval command as string,byval args as string messagebox.show args end sub private declare sub s...

關於VB顯示時間問題

第一 因為你在form load 中加了一個 註釋掉了,所以不會顯示,你應該去掉這個符號。第二 因為你精確到秒,所以實現不了unload me,畢竟執行也是需要時間的,所以兩個時間應該是無法相等。如果你想實現,可以按下面的 試試 private sub form load text1.text fo...