Foxtable(狐表)用户栏目专家坐堂 → [求助]tcp客户端接收问题


  共有1788人关注过本帖树形打印复制链接

主题:[求助]tcp客户端接收问题

帅哥哟,离线,有人找我吗?
kb9702
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:90 积分:1148 威望:0 精华:0 注册:2017/10/31 16:34:00
[求助]tcp客户端接收问题  发帖心情 Post By:2017/11/28 14:33:00 [只看该作者]

 使用tcp客户端案例测试时
将接收的数据写到表中
       Tables("表A").Current("第一列") = str
        Tables("表A").Position = Tables("表A").Position + 1
        Tables("表A").AddNew()
不需要在窗口上显示,将以下代码注销后,为什么每次收到数据多会弹出一个窗口语句中并没有messagebox啊
            'Dim txt = forms("窗口1").Controls("TextBox2")
            'txt.Text &= iif(txt.text > "", vbcrlf, "") & str
刚又测试了下,不注释掉窗口显示的语句,增加写入表的语句就会弹出一个窗口。。
[此贴子已经被作者于2017/11/28 14:37:20编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/28 15:05:00 [只看该作者]

输出所有代码,看哪里加入了msgbox等代码

 

http://www.foxtable.com/webhelp/scr/1987.htm

 


 回到顶部
帅哥哟,离线,有人找我吗?
kb9702
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:90 积分:1148 威望:0 精华:0 注册:2017/10/31 16:34:00
  发帖心情 Post By:2017/11/28 15:10:00 [只看该作者]

空的。。表A里没有写任何代码。。项目里也是。。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/28 15:14:00 [只看该作者]

以下是引用kb9702在2017/11/28 15:10:00的发言:
空的。。表A里没有写任何代码。。项目里也是。。

 

菜单->杂项->工具->输出代码,输出整个项目的代码。


 回到顶部
帅哥哟,离线,有人找我吗?
kb9702
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:90 积分:1148 威望:0 精华:0 注册:2017/10/31 16:34:00
  发帖心情 Post By:2017/11/28 15:18:00 [只看该作者]

项目事件

 

计划管理

 

表事件

 

窗口表事件

 

窗口与控件事件

 

窗口1_Button1_Click

 

Dim client = vars("client1")

If client IsNot Nothing Then

    client.receiveThread.Abort()

    client.nStream.Close()

End If

 

vars("client1") = new MyClient(e.Form.Controls("txtip").text, e.Form.Controls("txtport").text)

 

窗口1_Button2_Click

 

Dim client = vars("client1")

If client IsNot Nothing Then

    client.receiveThread.Abort()

    client.nStream.Close()

End If

 

窗口1_Button3_Click

 

Dim client = vars("client1")

Dim msg As String = e.Form.Controls("TextBox3").text

Dim stream() As Byte = Encoding.default.GetBytes(msg)

client.nStream.Write(stream, 0, stream.Length)   '往服务器发送登录信息

 

自定义函数

 

全局代码

 

Default

 

Public socket As MyClient

 

Public Class MyClient

    Public receiveThread As System.Threading.Thread

    Public nStream As System.Net.Sockets.NetworkStream

    Public tcp As  System.Net.Sockets.TcpClient

 

    Public Sub New(ByVal ip As String, ByVal port As Integer)

        Dim server As System.Net.IPAddress = System.Net.IPAddress.Parse(ip)

        tcp = New System.Net.Sockets.TcpClient()

        Try

            tcp.Connect(ip, port)

        Catch generatedExceptionName As Exception

            tcp = Nothing

        End Try

 

        If tcp Is Nothing Then

            MsgBox("无法连接服务器,请重试")

        Else

            Dim netStream As System.Net.Sockets.NetworkStream = tcp.GetStream()

                nStream = netStream

                receiveThread = New System.Threading.Thread(New System.Threading.ThreadStart(AddressOf ReceiveMsg))

receiveThread.IsBackground=True

                receiveThread.Start()

            msgbox("登录成功")

        End If

    End Sub

 

    Private Sub ReceiveMsg()

        While True

            Dim packet As Byte() = New Byte(1024) {}

            nStream.Read(packet, 0, packet.Length)

            Dim str As String = Encoding.Default.GetString(packet)

        Tables("表A").Current("第一列") = str

        Tables("表A").Position = Tables("表A").Position + 1

        Tables("表A").AddNew()

            Dim txt = forms("窗口1").Controls("TextBox2")

            txt.Text &= iif(txt.text > "", vbcrlf, "") & str

        End While

    End Sub

End Class

 

菜单事件

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
kb9702
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:90 积分:1148 威望:0 精华:0 注册:2017/10/31 16:34:00
  发帖心情 Post By:2017/11/28 15:21:00 [只看该作者]

发现一个特点,如果弹出的窗口不关闭,连续几次发送数据,然后关闭弹出的窗口,接着弹出的下一个窗口会将接收到的数据一次性在窗口中呈现

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/28 16:21:00 [只看该作者]

你把项目的bin文件夹删除,重新打开姓名测试。

 

如果还有问题,把你做的项目发上来测试。


 回到顶部
帅哥哟,离线,有人找我吗?
kb9702
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:90 积分:1148 威望:0 精华:0 注册:2017/10/31 16:34:00
  发帖心情 Post By:2017/11/28 16:40:00 [只看该作者]

就是坛子里下过来的例子插入了三段语句
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:tcp客户端1128.zip


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2017/11/28 17:28:00 [只看该作者]

测试了一下,没办法处理。这个是foxtable本身的问题,和你写的代码无关,控制不了。

 

如果你要处理,需要变通一下addnew。也就是接收到信息的时候,不addnew,而是把值添加到一个集合里面。然后做一个计时器,循环取出集合里面的信息,然后addnew。

 


 回到顶部
帅哥哟,离线,有人找我吗?
kb9702
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:90 积分:1148 威望:0 精华:0 注册:2017/10/31 16:34:00
  发帖心情 Post By:2017/11/29 11:01:00 [只看该作者]

那就没办法了,我试试直接sql语句插入后台应该可以


 回到顶部