标题:用winsock编制服务器程序遇到的问题
只看楼主
juncheng567
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2007-4-13
 问题点数:0 回复次数:1 
用winsock编制服务器程序遇到的问题

我用winsock编制了一个类似于服务器和客户端的通信对话程序,分别用两个窗体,服务器和客户端完成:
服务器:里面有一个按钮控件command1"退出服务器",两个text文本,名称为:textsend和textget,一个winsock
控件,名称为:winsockserver,下面是它们的代码:
  Private Sub Command1_Click()
Winsockserver.Close
End
End Sub

Private Sub Form_Load()
Textsend.Visible = False
Textget.Visible = False
Winsockserver.LocalPort = 12315
Winsockserver.Listen
End Sub

Private Sub Textsend_Change()
Winsockserver.SendData Textsend.Text
End Sub

Private Sub Winsockserver_Close()
Winsockserver.Close
Form_Load
End Sub


Private Sub Winsockserver_ConnectionRequest(ByVal requestID As Long)
Textsend.Visible = True
Textget.Visible = True
If Winsockserver.State <> sckClosed Then
Winsockserver.Close
Winsockserver.Accept requestID
End If
End Sub

Private Sub Winsockserver_DataArrival(ByVal bytesTotal As Long)
Dim tmpstr As String
Winsockserver.GetData tmpstr
Textget.Text = tmpstr
End Sub
客户端:里面有两个按钮控件command1"退出客户端"和command2"连接主机", 一个用于显示主机名称的
text文档connecthost,两个类似于上述服务器的发送和接收的text文档textsend和textget,一个winsock
控件,名称为 winsockclient,它们的代码为:
Private Sub Command1_Click()
Winsockclient.Close
End
End Sub

Private Sub Command2_Click()
Winsockclient.RemoteHost = connecthost.Text
Winsockclient.Connect
End Sub

Private Sub Form_Load()
textsend.Visible = False
Textget.Visible = False
Winsockclient.RemotePort = 12315
Winsockclient.RemoteHost = "localhost"
End Sub

Private Sub textsend_Change()
Winsockclient.SendData textsend.Text
End Sub

Private Sub Winsockclient_Connect()
textsend.Visible = True
Textget.Visible = True
Command2.Visible = False
End Sub

Private Sub Winsockclient_DataArrival(ByVal bytesTotal As Long)
Dim tmpstr As String
Winsockclient.GetData tmpstr
Textget.Text = tmpstr
Textget.Refresh
End Sub
我在同一台电脑上执行了一下,虽然连接成功,两边也可以互发数据,但不知道为什么当我把发送端的文字去掉后,接收端却残留一些文字未能去清,你们也可以试一下,高手们,能帮我解决一下吗?


[此贴子已经被作者于2007-4-14 21:16:17编辑过]

搜索更多相关主题的帖子: 服务器 winsock 编制 
2007-04-14 21:13
清澂居士
Rank: 6Rank: 6
等 级:贵宾
威 望:28
帖 子:1237
专家分:7
注 册:2006-12-19
得分:0 
Winsockclient.SendData textsend.Text

后面加个 doevents试试

佛曰:\"前世的500次回眸才换来今生的一次擦肩而过\".我宁愿用来世的一次擦肩而过来换得今生的500次回眸.
2007-04-16 09:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-131920-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.091880 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved