TcpClientTcpClient_SourseTcpSever_Sourse    

圖片字體可能是簡體的

因為本人開發環境是簡體的

請見諒><


現在即時通訊軟體很多

如 QQ , MSN , YahooMessanger

利用VB 也可以寫出一套簡易的即時通訊軟體

先使用設定元件 Microsoft Winsock Control 6.0(SP6)

設定使用元件在 VB功能表->專案->設定使用元件(亦可用Ctrl+T)

以下是Winsock的介紹︰

WinSock的全名是 Windows Socket,是定義介於Windows TCP/IP application

Client 與 TCP/IP 的protocol stack之間的一項標準介面。程式設計者於Windows上所

寫的網路軟體(如Gopher,Telnet,FTP..), 只要支援WinSock的規格,他就不需要顧慮所

使用的網路卡是那家廠牌,因為Winsock所提供的程式庫Winsock.DLL會負起與網路底層

溝通的工作。進而使得設計者能設計出更多功能或更user friendly的網路軟體。

一個網路聊天程序

需要 客戶端,服務端

相信這兩者不需要介紹了^^

以下是客戶端代碼

我們添加兩個文本框

命名為 : Send 、Output

一個Winsock

命名為: tcpClient

兩個按鈕

Private Sub Command1_Click()

tcpClient.SendData Send.Text '將Send.Text文本框傳送至指定ip

End Sub

 

Private Sub Command2_Click()

tcpClient.Connect ' 與服務端連線

End Sub

 

Private Sub Form_Load()

tcpClient.Protocol = sckTCPProtocol '將通訊協定設為TCP協定

tcpClient.RemotePort = 10 '打開10端口

tcpClient.RemoteHost = "127.0.0.1" '服務端ip ,127.0.0.1 = 本機

End Sub

 

利用DataArrival事件 處理 接收到的數據

Private Sub tcpClient_DataArrival(ByVal bytesTotal As Long)

Dim Data As String '宣告變數Data 為字符串

tcpClient.GetData Data '將接收到的資料 放入Data 這個變數

Output.Text = Data '將Data 輸入進 Output 文本框

End Sub

 

客戶端架設好了

可以來寫服務端內容了

一個按鈕

添加兩個文本框

命名為 Send 、Output

一個Winsock

命名為: tcpSever

 

 

Private Sub Form_Load()

tcpServer.LocalPort = 10 '設置本機端口 要與客戶端一致

tcpServer.Listen '監聽端口

End Sub

 

 

利用ConnectionRequest事件 來接收來自客戶端的連線請求

Private Sub tcpServer_ConnectionRequest(ByVal requestID As Long)

//准許連接

If tcpServer.State <> sckClosed Then

tcpServer.Close

tcpServer.Accept requestID

End If

End Sub

利用DataArrival事件 處理接收到的數據

Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long)

Dim Data As String '宣告變數Data為字符串

tcpServer.GetData Data '接收到的資料傳入變數 Data裡

Output.Text =Output.Text & Data '將資料傳入 Output.Text裡

End Sub

 

Private Sub Command1_Click()

tcpServer.SendData Send.Text '將Send.Text 傳送至遠程電腦

End Sub

 

 

一個簡單的網路 1 vs 1 聊天程序 就寫出來啦

 PS: 若覺得寫的好 就支持一下吧XDD

Posted by pua0156k at 痞客邦 PIXNET 留言(2) 引用(0) 人氣()


open trackbacks list Trackbacks (0)

留言列表 (2)

Post Comment
  • Private Comment
  • 小明
  • 請問 1.'State' 在 'AxMSWinsockLib.AxWinsock' 中為型別,無法當做運算式使用。
    這邊要怎麼更改為不是類別 ,小弟還是VB新手 ,請見諒>"<

You haven’t logged in yet, please use guest status to leave message. You can also log in with above service account and leave message

other options