请教各位专家:用组合框接收winsock收来的信息为什么会出错呢?
我在用VB做服务器和客户端的程序,服务器程序是启动运行后,winsock自动发送服务器程序中除主窗体外的三个窗体的标题文本.然后客户端程序启动运行后,点击窗体上的"连接"按钮后,连接成功后,客户端程序窗体上的winsock控件自动接收发送过来的数据,并把数据用组合框控件的additem方法加入到组合框当中.
我自己写的程序是:
服务器:
winsock1_connectionrequest() 
if winsock1.state <>sckclosed then 
winsock1.close 
winsock1.accept requestid
for i=1 to 3
winsock1.senddata form2.caption
winsock1.senddata form3.caption
winsock1.senddata.form4.caption
next iendif 
end sub 
winsock1_close()
winsock1.close
winsock1.listen
end subform_load()
winsock1.localport=1010
winsock1.listen
end sub这些代码是我要做的服务器端的全部代码,已经可以正常运行,并可以启动后自动发送数据.下面是客户端的程序:Private Sub Command1_Click()
Winsock1.Connect
Command1.Enabled = False
End SubPrivate Sub Form_Load()
Winsock1.RemoteHost = "192.168.1.250"
Winsock1.RemotePort = 1010
End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim a As String
Winsock1.GetData a
For i = 1 To 3
Combo1.AddItem = a
Combo1.AddItem = a
Combo1.AddItem = a
Next i
End Sub这就是整个的客户端程序的全部代码.出错的就是这个客户端程序,出错的地方就是在这个winsock1_Dataarrival()这里.出错的位置是在上面这个红色的这个地方.错误提示是:参数不可选.我不知道应该如何解决.正确的代码应该是什么?应该怎么写?请专家们指导下.让这客户端程序正确运行.并把接收来的数据填入到组合框中.多谢了!(这个程序我采用的是TCP方式连接)

解决方案 »

  1.   

      Combo1.AddItem a  '不用 = 号
      

  2.   

    一楼的雪情老师你好,回复看到了,我把combo1.additem后面的等号去掉了,结果是可以运行了,但又出现问题了:客户端的组合框里面有三行,这符合for语具的循环,但三行当中每一行里都有连续的form2到form4窗体的标题文字.比如说:服务器端的form2的标题是:中国,form3的标题是:美国.form4的标题是:韩国.那么在客户端窗体上的组合框里面的三行都是这连续的三个词.我是想让组合框的每一行占一个词.比如:第一行是中国,第二行是美国,第三行是韩国这样的.麻烦你再指导下.给我写下现实这个目标的代码.多谢了!
      

  3.   

    雪情老师,不行阿?客户端把循环去掉后,写成这样: 
    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) 
    Dim a As String 
    Winsock1.GetData a 
    Combo1.AddItem a 
    End Sub 
    组合框里面只有一行了,但这一行还是连续的三个词.该怎么办呢?我想让组合框三行中各占一个词.
      

  4.   

    http://topic.csdn.net/u/20081019/17/01625d86-6d4b-46ce-9590-95753249d9e4.html这里已经回复
    服务器端这么改VB code    winsock1_connectionrequest() if winsock1.state <>sckclosed then winsock1.close winsock1.accept requestid winsock1.senddata form2.caption & vbCrLf winsock1.senddata form3.caption & vbCrLf winsock1.senddata.form4.caption endif end sub客户端这么改VB code    Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) Dim a As String Dim t() As String Winsock1.GetData a t=Split(a,vbCrLf) For i = LBound(t) To UBound(t) Combo1.AddItem t(i) Next i End Sub