winsock使用tcp连接,因为数据太大。在listview显示有下面这些,不是正常的数据。应该怎么解决。
ariant w/o WLANRm-530 for HK with WLAN
RM-584 PRC variant w/o WLANRm-530 for HK with WLAN
RM-584 PRC variant w/o WLANRm-530 for HK with WLAN
RM-584 PRC variant w/o WLANRm-530 for HK with WLAN
RM-584 PRC variant w/o WLANRm-530 for HK with WLAN还有就是当使用者,点击这个选项后,怎样操作,能让他们等待到数据传送完成,才能做下一个操作。这里是两个问题,请大家来帮忙。

解决方案 »

  1.   

    将该选项的enabled属性设置为False,鼠标形状改为沙漏,甚至可以显示一个进度条,等完成后在恢复呗。
      

  2.   

    上面RM-584 PRC variant w/o WLANRm-530 for HK with WLAN这些应该怎么样解决呢。
      

  3.   

    貌似这个不是tcp传输问题,而是数据库操作的问题。必须检查代码
      

  4.   

    3000多条的时候,接收完成好。在listview上面现实这些
    ariant w/o WLANRm-530 for HK with WLAN
    RM-584 PRC variant w/o WLANRm-530 for HK with WLAN
    RM-584 PRC variant w/o WLANRm-530 for HK with WLAN
    RM-584 PRC variant w/o WLANRm-530 for HK with WLAN
    RM-584 PRC variant w/o WLANRm-530 for HK with WLAN
      

  5.   

    这个是10000多条数据。是我连接数据库的代码。应该没有问题吧。本来我是用udp来连接的,当3000多条数据的时候就出现“数据文报太大,不能装入缓冲区并被截断 ”,在论坛提问后,高手建议使用tcp来连接,就改成tcp来连接,改成tcp后,3000多条数据的时候,接收完后在listview显示不正常,在SubItems(0)上面显示上面那些英文。10000多条就假死。应该怎么解决,请给一个例子。Public Function spare_model() As String 
        Dim cn As New ADODB.Connection, Rs As New ADODB.Recordset
           cn.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False;" & _
       " Extended Properties='DSN=ascnew_2;SRVR=ascnew1214;DB=master;UID=dba;PWD=nokia&shangsi&asc'"
        cn.Open
        Rs.CursorLocation = adUseClient
        Rs.Open "SELECT T_SPARE_MODEL.c_spare_code,C_spare_name_local,c_spare_name_en,T_SPARE_MODEL.c_phone_model," & _
    "c_level_no,c_spare_model,c_warranty FROM T_SPARE_MODEL left join t_spare_part on " & _
    "t_spare_model.c_spare_code=t_spare_part.c_spare_code", cn, 3, 1
        Dim stra As String
    While Not Rs.EOF
    stra = stra + Rs.Fields("c_spare_code") + "|" + Rs.Fields("C_spare_name_local") + "|" + _
                  Rs.Fields("c_spare_name_en") + "|" + Rs.Fields("c_phone_model") + "|" + _
                  Rs.Fields("c_level_no") + "|" + Rs.Fields("c_spare_model") + "|" + _
                  Rs.Fields("c_warranty") + "|"
    Rs.MoveNext
     Wend
     stra = stra & "spare_model" & "|"
     spare_model = stra
         Set Rs = Nothing
         Set cn = Nothing
    End Function
      

  6.   

    看代码,好像是一次性取出所有记录然后连接到sta中,感觉字符串未免太长了点之后怎么发送也没有看到
      

  7.   

    对,是一次发送,不是说tcp会自动分段么。有解决的例子么。
      

  8.   

    我确实没有做过将字符串转为二进制数组,现在也是刚刚使用winsock。很多不懂的。请给一个例子或一段代码我。
      

  9.   

    字符串转二进制数组可以使用:Dim s As String
    s = "dasfas@#$@#!@#dsafs21123124212"
    Dim b() As Byte
    b = StrConv(s, vbFromUnicode)按固定大小循环发送不用写示例代码了吧?
      

  10.   

    二进制数组,使用一次发送,还是出现这些RM-584 PRC variant w/o WLANRm-530 for HK with WLAN
      

  11.   

    我错了。接收端,我设置成这样。Winsock1.GetData strb, vbByte或Winsock1.GetData strb, vbFromUnicode,都是乱码。接收那边需要怎么设置呢。
    也请大家给按固定大小循环发送示例代码我,我先去网上查找。看行不行。明天在来查看了。希望我能从网上找到我需要的。
      

  12.   

    ...接收端收也是按二进制收啊,接收后,还是用strconv转换回字符串
    s=strconv(b,vbunicode)