利用VB的Winsock控件,通过UDP协议实现两台机器的聊天进程相互传送数据的代码

vb\u91cc\u600e\u4e48\u901a\u8fc7winsock\u5b9e\u73b0\u4e24\u53f0\u8ba1\u7b97\u673a\u7684\u6570\u636e\u4f20\u8f93\uff0c\uff0c\u6bcf\u53f0\u8ba1\u7b97\u673a\u4e00\u4e2a\u7a0b\u5e8f\uff0c\uff0c\u6c42\u5927\u4fa0\u6307\u5bfc~~

UDP \u521d\u6b65
\u521b\u5efa UDP \u5e94\u7528\u7a0b\u5e8f\u6bd4\u521b\u5efa TCP \u5e94\u7528\u7a0b\u5e8f\u8fd8\u8981\u7b80\u5355\uff0c\u56e0\u4e3a UDP \u534f\u8bae\u4e0d\u9700\u8981\u663e\u5f0f\u7684\u8fde\u63a5\u3002\u5728\u4e0a\u9762\u7684 TCP \u5e94\u7528\u7a0b\u5e8f\u4e2d\uff0c\u4e00\u4e2a Winsock \u63a7\u4ef6\u5fc5\u987b\u663e\u5f0f\u5730\u8fdb\u884c\u201c\u76d1\u542c\u201d\uff0c\u53e6\u4e00\u4e2a\u5fc5\u987b\u4f7f\u7528 Connect \u65b9\u6cd5\u521d\u59cb\u5316\u8fde\u63a5\u3002
UDP \u534f\u8bae\u4e0d\u9700\u8981\u663e\u5f0f\u7684\u8fde\u63a5\u3002\u8981\u5728\u4e24\u4e2a\u63a7\u4ef6\u4e2d\u95f4\u53d1\u9001\u6570\u636e\uff0c\u9700\u8981\u5b8c\u6210\u4ee5\u4e0b\u7684\u4e09\u6b65\uff08\u5728\u8fde\u63a5\u7684\u53cc\u65b9\uff09\uff1a
\u5c06 RemoteHost \u5c5e\u6027\u8bbe\u7f6e\u4e3a\u53e6\u4e00\u53f0\u8ba1\u7b97\u673a\u7684\u540d\u79f0\u3002
\u5c06 RemotePort \u5c5e\u6027\u8bbe\u7f6e\u4e3a\u7b2c\u4e8c\u4e2a\u63a7\u4ef6\u7684 LocalPort \u5c5e\u6027\u3002
\u8c03\u7528 Bind \u65b9\u6cd5\uff0c\u6307\u5b9a\u4f7f\u7528\u7684 LocalPort\u3002\uff08\u4e0b\u9762\u5c06\u8be6\u7ec6\u5730\u8ba8\u8bba\u8be5\u65b9\u6cd5\u3002\uff09
\u56e0\u4e3a\u4e24\u53f0\u8ba1\u7b97\u673a\u7684\u5730\u4f4d\u53ef\u4ee5\u770b\u6210\u201c\u5e73\u7b49\u7684\u201d\uff0c\u8fd9\u79cd\u5e94\u7528\u7a0b\u5e8f\u4e5f\u88ab\u79f0\u4e3a\u70b9\u5230\u70b9\u7684\u3002\u4e3a\u4e86\u5177\u4f53\u8bf4\u660e\u8fd9\u4e2a\u95ee\u9898\uff0c\u4e0b\u9762\u5c06\u521b\u5efa\u4e00\u4e2a\u201c\u804a\u5929\u201d\u5e94\u7528\u7a0b\u5e8f\uff0c\u4e24\u4e2a\u4eba\u53ef\u4ee5\u901a\u8fc7\u5b83\u8fdb\u884c\u5b9e\u65f6\u7684\u4ea4\u8c08\u3002
\u8981\u521b\u5efa\u4e00\u4e2a UDP \u4f19\u4f34\uff0c\u8bf7\u6309\u7167\u4ee5\u4e0b\u6b65\u9aa4\u6267\u884c\uff1a
\u521b\u5efa\u4e00\u4e2a\u65b0\u7684 Standard EXE \u5de5\u7a0b\u3002
\u5c06\u7f3a\u7701\u7684\u7a97\u4f53\u7684\u540d\u79f0\u4fee\u6539\u4e3a frmPeerA\u3002
\u5c06\u7a97\u4f53\u7684\u6807\u9898\u4fee\u6539\u4e3a\u201cPeer A\u201d\u3002
\u5728\u7a97\u4f53\u4e2d\u653e\u5165\u4e00\u4e2a Winsock \u63a7\u4ef6\uff0c\u5e76\u5c06\u5176\u547d\u540d\u4e3a udpPeerA\u3002
\u5728\u201c\u5c5e\u6027\u201d\u9875\u4e0a\uff0c\u5355\u51fb\u201c\u534f\u8bae\u201d\u5e76\u5c06\u534f\u8bae\u4fee\u6539\u4e3a UDPProtocol\u3002
\u5728\u7a97\u4f53\u4e2d\u6dfb\u52a0\u4e24\u4e2a TextBox \u63a7\u4ef6\u3002\u5c06\u7b2c\u4e00\u4e2a\u547d\u540d\u4e3a txtSend\uff0c\u7b2c\u4e8c\u4e2a\u547d\u540d\u4e3a txtOutput\u3002
\u4e3a\u7a97\u4f53\u589e\u52a0\u5982\u4e0b\u7684\u4ee3\u7801\u3002 Private Sub Form_Load()
'\u63a7\u4ef6\u7684\u540d\u5b57\u4e3a udpPeerAWith udpPeerA'\u91cd\u70b9:\u5fc5\u987b\u5c06 RemoteHost \u7684\u503c
'\u4fee\u6539\u4e3a\u8ba1\u7b97\u673a\u7684\u540d\u5b57\u3002
.RemoteHost= "PeerB" .RemotePort = 1001 '\u8fde\u63a5\u7684\u7aef\u53e3\u53f7\u3002
.Bind 1002 '\u7ed1\u5b9a\u5230\u672c\u5730\u7684\u7aef\u53e3\u3002
End WithfrmPeerB.Show '\u663e\u793a\u7b2c\u4e8c\u4e2a\u7a97\u4f53\u3002
End SubPrivate Sub txtSend_Change()'\u5728\u952e\u5165\u6587\u672c\u65f6\uff0c\u7acb\u5373\u5c06\u5176\u53d1\u9001\u51fa\u53bb\u3002
udpPeerA.SendData txtSend.TextEnd SubPrivate Sub udpPeerA_DataArrival _(ByVal bytesTotal As Long)Dim strData As StringudpPeerA.GetData strDatatxtOutput.Text = strDataEnd Sub
\u8981\u521b\u5efa\u7b2c\u4e8c\u4e2a UDP \u4f19\u4f34\uff0c\u8bf7\u6309\u7167\u4ee5\u4e0b\u6b65\u9aa4\u6267\u884c\uff1a
\u5728\u5de5\u7a0b\u4e2d\u6dfb\u52a0\u4e00\u4e2a\u6807\u51c6\u7a97\u4f53\u3002
\u5c06\u7a97\u4f53\u7684\u540d\u5b57\u4fee\u6539\u4e3a frmPeerB\u3002
\u5c06\u7a97\u4f53\u7684\u6807\u9898\u4fee\u6539\u4e3a\u201cPeer B\u201d\u3002
\u5728\u7a97\u4f53\u4e2d\u653e\u5165\u4e00\u4e2a Winsock \u63a7\u4ef6\uff0c\u5e76\u5c06\u5176\u547d\u540d\u4e3a udpPeerB\u3002
\u5728\u201c\u5c5e\u6027\u201d\u9875\u4e0a\uff0c\u5355\u51fb\u201c\u534f\u8bae\u201d\u5e76\u5c06\u534f\u8bae\u4fee\u6539\u4e3a\u201cUDPProtocol\u201d\u3002
\u5728\u7a97\u4f53\u4e0a\u6dfb\u52a0\u4e24\u4e2a TextBox \u63a7\u4ef6\u3002\u5c06\u7b2c\u4e00\u4e2a\u547d\u540d\u4e3a txtSend\uff0c\u7b2c\u4e8c\u4e2a\u547d\u540d\u4e3a txtOutput\u3002
\u5728\u7a97\u4f53\u4e2d\u6dfb\u52a0\u5982\u4e0b\u7684\u4ee3\u7801\u3002 Private Sub Form_Load()
'\u63a7\u4ef6\u7684\u540d\u5b57\u4e3a udpPeerB\u3002
With udpPeerB'\u91cd\u70b9:\u5fc5\u987b\u5c06 RemoteHost \u7684\u503c\u6539\u4e3a
'\u8ba1\u7b97\u673a\u7684\u540d\u5b57\u3002
.RemoteHost= "PeerA".RemotePort = 1002 '\u8981\u8fde\u63a5\u7684\u7aef\u53e3\u3002
.Bind 1001 '\u7ed1\u5b9a\u5230\u672c\u5730\u7684\u7aef\u53e3\u4e0a\u3002
End WithEnd SubPrivate Sub txtSend_Change()'\u5728\u952e\u5165\u540e\u7acb\u5373\u53d1\u9001\u6587\u672c\u3002udpPeerB.SendData txtSend.TextEnd SubPrivate Sub udpPeerB_DataArrival _(ByVal bytesTotal As Long)Dim strData As StringudpPeerB.GetData strDatatxtOutput.Text = strDataEnd Sub

\u524d\u9762\u58f0\u660e\u65f6\u8981\u58f0\u660e\u6210\u53ef\u53d8\u6570\u7ec4 Dim jsDATA\uff08\uff09 as byte
\u63a5\u6536\u4e8b\u4ef6\u524d\u8981\u91cd\u65b0\u58f0\u660e\uff1aredim jsDATA\uff08bytesTotal) as byte
\u4f60\u6700\u597d\u4e5f\u628abytesTotal\u7684\u6570\u7ec4\u663e\u793a\u51fa\u6765\uff0c\u76d1\u63a7\u4e00\u4e0b\u662f\u4e0d\u662f15\u4e2a\u5b57\u8282

Option Explicit

Private Sub Command1_Click()

    If Text3.Text = "" Then

        MsgBox "请输入对方IP", vbOKOnly, "提示"

        Exit Sub

    End If

    If Text2.Text = "" Then

        MsgBox "请输入要发送的内容", vbOKOnly, "提示"

        Exit Sub

    End If

    Winsock1.RemoteHost = Text3.Text

    Dim a As String

    'a = Text2.Text

    Winsock1.SendData Text2.Text

    Text1.Text = Text1.Text & vbCrLf & "我:" & Text2.Text

    Text2.Text = ""

End Sub

Private Sub Form_Load()

    Text4.Text = Winsock1.LocalIP

    Text3.Text = ""

    Winsock1.RemotePort = 2011远程端口

    Winsock1.LocalPort = 2011本地端口

    Winsock1.Bind 2011绑定端口

    Text4.Text = Winsock1.LocalIP

    

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

    On Error Resume Next    '接收错误则继续执行

    Dim a As String

    Winsock1.GetData a

    Text1.Text = Text1.Text & vbCrLf & "对方:" & a

End Sub

这里的端口是预设好的,IP是可变的,你可以自己改一下,加两个文本框就行了



  • 濡備綍鐢╒B鐨剋insock鎺т欢缂栧啓鏃堕棿鏈嶅姟鍣ㄥ拰瀹㈡埛绔
    绛旓細褰撶劧濡傛灉浣犺姣忕閽熼兘鍍忓鎴风鍙戦佹椂闂寸殑璇濓紝浣犲彲浠ュ湪鏈嶅姟鍣ㄧ娣诲姞涓涓猧nterval涓1000ms鐨則imer,鍦ㄤ笌瀹㈡埛绔缓绔嬭繛鎺ュ悗浣胯timer鍙敤锛岃timer鐨勬椂闂翠腑灏辨槸璁winsock鎺т欢鍙戦佹椂闂达紝鐒跺悗瀹㈡埛绔瘡娆℃敹鍒版暟鎹悗鏇存柊鏂囨湰妗嗐備笉杩囪繖鏍峰お楹荤儲锛屼篃澶氮璐圭綉缁滆祫婧愪簡锛=== 琛ュ厖锛氳鎯冲湪瀹㈡埛绔悓鏃舵樉绀烘湇鍔″櫒鐨勬椂闂村拰...
  • VB濡備綍浣跨敤Winsock杩涜1瀵瑰閫氫俊
    绛旓細VB鍙氳繃閫氳繃鍒涘缓Winsock鎺т欢鏁扮粍锛浣跨敤涓涓鎺т欢Winsock涔熷彲浠ュ悓鏃舵帴鍙楀涓繛鎺ヨ姹傘備笉闇瑕佸叧闂繛鎺ワ紝鑰屽彧闇鍒涘缓鏂扮殑鎺т欢瀹炰緥锛堥氳繃璁剧疆鍏剁储寮曞睘鎬э級锛岀劧鍚庡湪鏂扮殑瀹炰緥涓婅皟鐢 Accept 鏂规硶銆傛彁渚涗簡璁块棶 TCP 鍜 UDP 缃戠粶鏈嶅姟鐨勬柟渚块斿緞銆侻icrosoft Access銆乂isual Basic銆乂isual C++ 鎴 Visual FoxPro 鐨勫紑鍙戜汉鍛...
  • VB涓瓀insock鎺т欢鐨勬墍鏈夊睘鎬х殑鍋氱敤甯垜鍒楀嚭鏉?鍔犲垎?
    绛旓細LocalPort | 鏈湴鏈哄櫒閫氫俊绋嬪簭鐨勭鍙(0<绔彛<65536)RemoteHost | 杩滅▼鏈哄櫒鍚 RemotePort | 杩滅▼鏈哄櫒鐨勯氫俊绋嬪簭绔彛 state | 杩炴帴鐨勫綋鍓嶇姸鎬(鏂囧悗鏈夎缁嗚鏄)Protocal | 浣跨敤TCP鎴朥DP鍗忚(杩欓噷鎴戜滑閫夆0-sckTCPProtocal鈥)鏂规硶 Listen Listen鏂规硶鐢ㄤ簬鏈嶅姟鍣ㄧ▼搴忥紝绛夊緟瀹㈡埛璁块棶銆傛牸寮忥細Winsock瀵硅薄.listen ...
  • 鍦VB6.0涓濡備綍浣跨敤socket鎺т欢?
    绛旓細鐢╒B5涓璚inSock鎺т欢缂栧啓缃戜笂鑱婂ぉ绋嬪簭 Sockets鏄湪Unix绯荤粺涓婃彁鍑烘潵鐨,涓寮濮嬩富瑕佹槸鐢ㄤ簬鏈湴閫氳,浣嗗緢蹇氨搴旂敤鍒癈/S浣撶郴涓娿侻icroSoft鍏徃鍦ㄦ鍩虹涓婂垱寤轰簡WinSock鎺т欢,涓撻棬鐢ㄤ簬Windows鎺ュ彛,涓嶴ockets瀹屽叏鍏煎銆俉insock鎺т欢瀵圭敤鎴锋潵璇存槸涓嶅彲瑙佺殑,瀹冩彁渚涗簡璁块棶 TCP 鍜 UDP 缃戠粶鏈嶅姟鐨勬柟渚块斿緞銆侻icrosoft Access銆乂isual Bas...
  • VB涓瓀insock鎺т欢鎬庝箞娣诲姞
    绛旓細1.鍦VB涓,渚濇鐐瑰嚮宸ュ叿鏍忎笂鐨勨滃伐绋嬧濃斺斺滈儴浠垛,鍦ㄥ脊鍑虹殑瀵硅瘽妗嗕腑鍕鹃夆渕icrosoft winsock control鈥濆啀鐐瑰嚮搴旂敤鍗冲彲娣诲姞銆2.濡傛灉浣vb鐨娌℃湁winsock鎺т欢,璇峰埌http;//thunderhacker.ys168.com(鍦ㄥ疄鐢ㄥ伐鍏蜂腑)涓嬭浇涓涓獁insock鎺т欢銆 鏈洖绛旇鎻愰棶鑰呴噰绾 thunderhacker1 | 鎺ㄨ崘浜2017-12-16 11:17:06 涓炬姤| ...
  • VB濡備綍浣跨敤Winsock鎺т欢,鍙戦佹枃浠跺埌鏈嶅姟鍣?
    绛旓細Winsock1.RemoteHost = my '杩欓噷搴旇鏄缃负鍒汉璁$畻鏈虹殑IP鍦板潃锛岀敱浜庤嚜宸辨槸鍗曟満锛屾墍浠ュ氨璁剧疆鎴愯嚜宸辩殑锛岃嚜宸辩粰鑷繁鍙戜俊鎭 End Sub Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) '鍙栧緱鏁版嵁鏃跺彂鐢 Dim Tmp As String Winsock1.GetData Tmp, vbString '鍙栧緱鏁版嵁 Tmp = "瀵规柟浣嶅潃:" ...
  • VB涓瓀insock鎺т欢鐨勬墍鏈夊睘鎬х殑鍋氱敤甯垜鍒楀嚭鏉?鍔犲垎?
    绛旓細getData 鐢ㄤ簬鎺ユ敹杩滅▼鍙戦佹潵鐨勬暟鎹紝璇硶锛Winsock.getData 鍙橀噺 Close 鍏抽棴閫氫俊 Winsock鐨勪富瑕佷簨浠讹細浜嬩欢鍚 璇存槑 Connect 褰撴湇鍔″櫒鎺ユ敹瀹㈡埛绔姹傛椂锛屾湇鍔$鍙戠敓鐨勪簨浠 DataArrival 鏈夋暟鎹埌杈炬椂鍙戠敓鐨勪簨浠讹紝鍙互鍦ㄨ繖涓簨浠朵腑鏉etData鍙戦佹潵鐨勬暟鎹 ConnectionRequest 瀹㈡埛绔鐢Connect鏂规硶鏃舵湇鍔″櫒鍙戠敓鐨勪簨浠讹紝鍙互...
  • VB鎬庝箞鐢╳insock鎺т欢鍟
    绛旓細鑷充簬濡備綍鑾峰彇琚鏈ㄩ┈鐢佃剳鐨処P鍦板潃鎴戞濇潵鎯冲幓鍐冲畾鐢ㄩ偖浠讹紝杩欑鏂规硶杈冧负绠鍗曟柊浜轰篃姣旇緝瀹规槗鐞嗚В锛佷笅闈㈠紑濮嬭瑙d唬鐮佽繖鏄垜寰堥暱鏃堕棿浠ュ墠缂栫殑浠g爜浜嗭紝鏈汉杈冩噿锛佹湁浜涘湴鏂规噿寰楁敞閲婏紝澶у濡傛灉鏈変笉鏄庣櫧鐨 鍙戦棶鍚э紒1銆佸缓绔嬫湇鍔″櫒绔紝鏂板缓涓涓VB宸ョ▼锛屽彧娣诲姞涓涓WINSOCK鎺т欢灏卞彲浠ヤ簡锛屽鏋滀笉鍠滄鐢鎺т欢閭d綘灏卞彧鑳...
  • VB涓瓀insocK鎺т欢闂
    绛旓細濡傛灉鏄帶浠舵暟缁勭殑璇濓紝瀹冪殑浜嬩欢涓細鑷姩甯︿竴涓狪ndex鍙傛暟鐨勶紝鏍规嵁杩欎釜灏辩煡閬撴槸鍝釜winsock鎺ユ敹鐨勬暟鎹紝鐒跺悗鍐嶇粰杩欎釜winsock鍙戦佹暟鎹嵆鍙傛瘮濡傦細Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)'Winsock1(Index)灏辨槸鎺ユ敹鍜屽彂閫佹暟鎹殑閭d釜瀹㈡埛绔搴鐨刉insock鎺т欢 End Sub ...
  • vb閲鎬庝箞閫氳繃winsock瀹炵幇涓ゅ彴璁$畻鏈虹殑鏁版嵁浼犺緭,,姣忓彴璁$畻鏈轰竴涓▼搴...
    绛旓細UDP 鍒濇 鍒涘缓 UDP 搴旂敤绋嬪簭姣斿垱寤 TCP 搴旂敤绋嬪簭杩樿绠鍗曪紝鍥犱负 UDP 鍗忚涓嶉渶瑕佹樉寮忕殑杩炴帴銆傚湪涓婇潰鐨 TCP 搴旂敤绋嬪簭涓紝涓涓 Winsock 鎺т欢蹇呴』鏄惧紡鍦拌繘琛屸滅洃鍚濓紝鍙︿竴涓繀椤浣跨敤 Connect 鏂规硶鍒濆鍖栬繛鎺ャ俇DP 鍗忚涓嶉渶瑕佹樉寮忕殑杩炴帴銆傝鍦ㄤ袱涓帶浠朵腑闂村彂閫佹暟鎹紝闇瑕佸畬鎴愪互涓嬬殑涓夋锛堝湪杩炴帴鐨勫弻鏂癸級锛...
  • 扩展阅读:winsock控件使用详解 ... vb可编辑的表格控件 ... vb中比较好用的表格控件 ... bootstrap datetimepicker ... winsock下载 ... microsoft edge下载 ... vb控件图标大全 ... vba调用表格控件 ... vb标签控件图标 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网