利用WinSock實現簡單網路程式設計

2021-04-09 02:16:10 字數 1694 閱讀 4078

利用winsock可以實現tcp、udp協議通訊。我們知道,網路通訊要找三個位址即網路位址、主機位址、服務位址(埠號)。通過機器的ip位址和子網掩碼計算可以得到網路和主機位址。而每個機器的服務位址(埠號)有65536個。下面就談一下怎樣利用winsock實現網路通訊。

伺服器端程式編寫:建立乙個窗體,新增乙個text控制項用於存放傳送資訊的內容、乙個命令按鈕(cmdsend)用於傳送資訊、兩個winsock控制項(scklisten,sckserver),乙個用於監聽、乙個用於接受。把sckserver的localport 屬性設為8001(一定不要和scklisten的埠號一樣即可)。

程式**如下:

private sub cmdsend_click()

sckserver.senddata text1.text

end sub

private sub form_load()

scklisten.localport = 8000

scklisten.listen

end sub

private sub scklisten_connectionrequest(byval requestid as long)

sckserver.accept requestid

cmdsend.enabled = true

end sub

private sub sckserver_dataarrival(byval bytestotal as long)

dim s as string

sckserver.getdata s, vbstring, bytestotal

msgbox s

end sub

工作站端程式編寫:建立乙個窗體,新增乙個text控制項用於存放傳送資訊的內容、乙個命令按鈕(cmdsend)用於傳送資訊、乙個winsock控制項(sckclient)用於接受資訊。把sckclient的localport 屬性設為8002。

程式**如下:

private sub cmdsend_click()

sckclient.senddata text1.text

end sub

private sub form_load()

dim sip as string

sip = inputbox("please input ip address", sckclient.localip)

sckclient.connect sip, 8000

end sub

private sub sckclient_dataarrival(byval bytestotal as long)

dim s as string

sckclient.getdata s, vbstring, bytestotal

msgbox s

end sub

使用方法:在伺服器端啟動服務程式,執行工作站程式,輸入伺服器主機的ip位址,在text 框中輸入要傳送的內容,單擊傳送命令按鈕,此時伺服器就會接受到資訊。這時在伺服器的文字框輸入傳送的內容,單擊傳送命令按鈕,此時工作站就會接受到資訊。

當然,這只是個簡單的測試程式,在實際應用中可以利用變數、資料庫等做很多事情。同時這個程式只能一對一的傳送,想實現乙個伺服器多個工作站方式,可以在伺服器端多建立幾個winsock接收控制項,乙個控制項對應乙個工作站,但要注意,winsock控制項的localport 屬性要不一樣。即乙個埠對應乙個服務。

利用Winsock實現UDP通訊

internet 協議集支援乙個無連線的傳輸協議,該協議稱為使用者資料報協議 udp,user datagram protocol udp 為應用程式提供了一種無需建立連線就可以傳送封裝的 ip 資料報的方法。首先認識幾個windows提供的結構體 word 為微軟sdk中的型別,為兩個byte的無...

winSock網路程式設計 協議的簡單示例(P)

1.關於udp udp相對於tcp而言,它是不可靠的協議,不是有話說,任何存在的東西總有其優點所在 嗎?udp雖然可靠性不夠高,但傳輸效率卻很高,速度也很快,所以用的也很多。2.通訊前的注意工作 因為採用基於windows套介面的程式設計,通訊前,要進行初始化windows sockets服務。用w...

Winsock網路通訊

winsock網路通訊 這裡我希望和大家 一下winsock網上通訊的程式,由於網際網路的普及,越來越多的程式具有了在網上與其他程式通訊的功能.其實所有這些功能都建立在winsock介面之上,應用程式執行大多數網路通訊的基本物件稱為套介面或軟插口 socket 使用mfc winsocket類新增網...