问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

VB Winsock最简单的;聊天程序源代码

发布网友 发布时间:2022-05-14 13:23

我来回答

5个回答

热心网友 时间:2023-07-23 08:29

这个是我以前学习的一个实例。希望对你有帮助!!!

用VB实现客户——服务器(TCP/IP)编程实例

-
现在大多数语言都支持客户-服务器模式编程,其中VB给我们提供了很好的客户-服务器编程方式。下面我们用VB来实现TCP/IP网络编程。
TCP/IP协议是Internet最重要的协议。VB提供了WinSock控件,用于在TCP/IP的基础上进行网络通信。当两个应用程序使用Socket进行网络通信时,其中一个必须创建Socket服务器侦听,而另一个必须创建Socket客户去连接服务器。这样两个程序就可以进行通信了。
1.创建服务器,首先创建一个服务端口号。并开始侦听是否有客户请求连接。
建立一窗体,并向其增加一个Winsock控件(可在工程菜单中的部件项来添加此控件)
添加两文本框Text1,Text2,和一按钮Command1
Private Sub Form_Load()
SockServer.LocalPort = 2000 ′服务器端口号,最好大于1000
SockServer.Listen ′开始侦听
End Sub
Private Sub Form_Unload(Cancel As Integer)
SockServer.Close
End Sub
Private Sub SockServer_Close()
SockServer.Close
End Sub
Private Sub SockServer_ConnectionRequest(ByVal requestID As Long)
SockServer.Close
SockServer.Accept requestID ′表示客户请求连接的ID号
End Sub
′当客户向服务器发送数据到达后,产生DataArrival事件,在事件中接收数据,GetData方法接收数据。
Private Sub SockServer_Data
Arrival(ByVal bytesTotal As Long)
Dim s As String
SockServer.GetData s
Text1.Text = s
End Sub
当我需要向客户发送数据时,只需调用SendData方法。
Private Sub Command1_Click()
SockServer .SendData Text2.Text
text1.text = text2.text
text2.text = ""
End Sub
2.创建客户。要创建客户连接服务器,首先设置服务器主机名,如IP地址、域名或计算机名,然后设置服务器端口,最后连接服务器。
建立一窗体,并向其增加一个Winsock控件(可在工程菜单中的部件项来添加此控件),取名为:SockC1。添加两文本框Text1,Text2,和一按钮Command1
Private Sub Form_Load()
dim my as string
my = SockCl.RemoteHostIP
SockCl.RemoteHost = my
′表示服务器主机名
SockCl.RemotePort = 2000
′表示服务器端口名
SockCl.Connect
′连接到服务器
End Sub
Private Sub Form_Unload(Cancel As Integer)
SockCl.Close
End Sub
Private Sub SockCl_Close()
SockCl.Close
End Sub
Private Sub SockCl_DataArrival(ByVal bytesTotal As Long)
Dim s As String
SockCl.GetData s ′接收数据到文本框中
Text1.Text = s
End Sub
Private Sub Command1_Click()
SockCl.SendData Text2.Text ′向服务器发送数据
text1.text = text2.text
text2.text = ""
End Sub
3.进行通信。把这两个窗体分别编译成两个EXE文件,服务器Server.exe和客户Client.exe程序,并把它们分别安装在服务器端和客户端,这样就可以实现两者通信了。

------------------------------------整理后的代码如下-------------------------------

Private Sub Form_Load()
Dim my As String
my = SockCl.RemoteHostIP
SockCl.RemoteHost = my
SockCl.RemotePort = 2000
SockCl.Connect
End Sub
Private Sub Form_Unload(Cancel As Integer)
SockCl.Close
End Sub
Private Sub SockCl_Close()
SockCl.Close
End Sub
Private Sub SockCl_DataArrival(ByVal bytesTotal As Long)
Dim s As String
SockCl.GetData s
Text1.Text = s
End Sub
Private Sub Command1_Click()
SockCl.SendData Text2.Text
Text1.Text = Text2.Text
Text2.Text = ""
End Sub

Private Sub Form_Load()
SockServer.LocalPort = 2000
SockServer.Listen
End Sub
Private Sub Form_Unload(Cancel As Integer)
SockServer.Close
End Sub
Private Sub SockServer_Close()
SockServer.Close
End Sub
Private Sub SockServer_ConnectionRequest(ByVal requestID As Long)
SockServer.Close
SockServer.Accept requestID
End Sub
Private Sub Command1_Click()
SockServer.SendData Text2.Text
Text1.Text = Text2.Text
Text2.Text = ""
End Sub
Private Sub SockServer_DataArrival(ByVal bytesTotal As Long)
Dim s As String
SockServer.GetData s
Text1.Text = s
End Sub

热心网友 时间:2023-07-23 08:29

做两个窗体;各加上以上控件:winsock1,text1,text2,command1
FORM!:

Private Sub Command1_Click() '发送数据
Winsock1.SendData Text1.Text
End Sub
Private Sub Form_Load() '通信 ‘设置端口
Winsock1.LocalPort = 1001
Winsock1.Listen '监听
Form2.Show
End Sub
Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> sckClosed Then''如果不是关闭状态

Winsock1.Close
End If
Winsock1.Accept requestID '接收客户端发送的连接请求
End Sub
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim getstr As String
Winsock1.GetData getstr '获取对方发送过来的信息
Text1.Text = ""
Text1.Text = getstr
End Sub

FORM2:

Private Sub Command1_Click() '发送数据
Winsock1.SendData Text1.Text
End Sub
Private Sub Form_Load()
Winsock1.RemoteHost = "127.0.0.1" '服务器IP
Winsock1.RemotePort = 1001 '服务器端口
Winsock1.Connect '发送连接
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim getstr As String
Winsock1.GetData getstr
Text1.Text = ""
Text1.Text = getstr
End Sub

热心网友 时间:2023-07-23 08:30

代码有。
但是,网络聊天要解决【把ip地址通知给对方】的问题,通常是使用网络服务器做中转,类似于QQ或某些木马程序。
留个信箱吧!

热心网友 时间:2023-07-23 08:31

手机打的还要加上prxxx忘记了:
BUTTON_DOWN
IF BUTTON=1 THEN
CALL S
ELSE
poplar a
end if
end

sub s
if text1.text="" then
msgbox"不能输入空字符"
text1.labe=text1.labe
else
text1.labe=text1.labe day,time text2.text
end if
end sub

热心网友 时间:2023-07-23 08:31

精简版不能生成exe
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
13岁一直到18岁晚上经常熬夜会有什么影响 具象表现素描内容简介 ...| 从14世纪文艺复兴到20世纪具象表现绘画 · 168幅画 · 图解西方... 【漫画赏析】比喻具象化——《孤高之人》手法分析 具象美术作品有哪些 具象艺术艺术家介绍 话说 曾经有个演唱会 是初音未来演唱会 39祭 谁知道微信聊天记录删掉了,还能恢复过来吗?有什么软件可以恢复吗?不... 六爻。测缘分。测婚姻 礼仪起源于祭祀的证据是什么? VC安装失败 找不到指定文件 蛀牙了到底要不要补牙? 龋齿补牙好,还是拔牙好 牙齿有蛀牙该怎么办。补牙可以吗 门牙的牙缝间有一点点的龋齿,可以通过补牙来修复吗,会不会很麻烦? 蛀牙补牙就好了吗 牙齿有一点龋齿的情况需要去补牙吗? 平时那几颗牙齿稍微会有点敏感 酸痛 补牙有必要吗? 蛀牙烂了一点要补牙吗? 华为cp60无线充电器可以iPhone充电经常断 有蛀牙,必须要补牙吗? 腊八粥的做法和原料主要有那些? 补牙对龋齿有用吗? 补牙对牙齿好吗? 牙齿是轻微的蛀牙,补牙有必要吗? 古希腊文化在历史上有什么意义 马拉松比赛来源于古希腊战争,报告胜利消息的人为何不骑马而是要跑着回去送信呢?战争中不可能没有战马吧? 有哪些关于古希腊神话战争电影 古希腊战争与智慧女神到底是谁 盘点古希腊战争电影大全,【在线观看】免费百度云资源 VC++的 安装问题 谁能给个基于vc的局域网聊天源代码和源程序??? java聊天程序源代码,简单点,尽量带注释,注释越多越好谢谢 vc++安装 vc++的安装 vc++安装方法 怎样安装vc? 黑洞和猪队友怎么造句 网络黑洞造句 三词造句: 黑洞指什么 用涓涓流淌,神秘莫测,炽热,景观,倾倒造句 用什么像什么又像什么更像什么造句 用“一个……可以……”造句 用“什么像什么又像什么更像什么”来造句,怎么造句? 用“好似···仿佛···”造句 【造句】【语文好的拜托了QAQ】还有什么比宇宙的诞生更美丽 买房一2线和三四线是什么意思? 三四线城市 在Photoshop中有什么办法可以快速精准的移动图层位置么?