标题:C#(socket)开发的windows窗体程序(客户端和服务器端)
取消只看楼主
zl123
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2010-8-24
结帖率:66.67%
已结贴  问题点数:20 回复次数:5 
C#(socket)开发的windows窗体程序(客户端和服务器端)
用socket实现客户端接受服务器端发送的数据并在右下角显示出来(类似qq那种的提示框),现在基本上已经实现,但是有个问题(就是说:在接收的一端如果是用一个按钮的点击事件的话就可以正常在右下角弹出提示框(一切正常),但是在获取数据的同时就调用弹出提示框的方法也可以正常弹出提示框(但是没有展示数据,而且在那个方法里确实是得到了数据),这个问题很是不能理解为什么自动弹出就不显示数据,点击按钮就可以显示出数据呢?),请高手进来帮帮啊~~
搜索更多相关主题的帖子: windows socket 服务器 客户端 窗体 
2010-09-19 17:33
zl123
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2010-8-24
得分:0 
/// <summary>
        /// 接收、解码
        /// </summary>
        private void AcceptWorkThread()
        {
            Socket socket = listener.AcceptSocket();
            byte[] buffer = new byte[1024];
            while (true)
            {
                int receiveCount = socket.Receive(buffer);
                if (receiveCount > 0)
                {
                    string recString = Encoding.UTF8.GetString(buffer, 0, receiveCount);
                    ShowMsg(recString);//调用弹出的方法
                }
                else
                {
                    socket.Close();
                    break;
                }
            }
        }
//调用的方法
public void ShowMsg(string text)
        {
            msg = text;//这个是我要用到的一个全局变量赋值
            this.showmessage();//调用弹出提示的方法

        }
//按钮的点击事件
private void button1_Click(object sender, EventArgs e)
        {
            this.showmessage();//调用弹出提示的方法
        }


//展示弹出的方法
private void showmessage()
        {
            if (!string.IsNullOrEmpty(msg))
            {
                Form2 form2 = new Form2(msg);
                AnimateWindow(form2.Handle, 1000, AW_VER_NEGATIVE | AW_ACTIVATE);
                form2.Show();
            }
        }


现在的问题是在按钮的点击事件中调用showmessage()这个方法就可以正常实现。但是在ShowMsg()这个方法中调用的时候可以弹出,但是不显示数据
2010-09-20 11:28
zl123
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2010-8-24
得分:0 
上面这些都是服务器端的代码,只要是客户端发送消息了,这边就会执行AcceptWorkThread这个方法,而且我一跟踪调试了,点击按钮和直接在AcceptWorkThread这个方法里调用都可以正确得到参数(msg)的值,点击按钮的时候可以显示出来,在AcceptWorkThread中直接调用就显示不出来
2010-09-20 13:26
zl123
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2010-8-24
得分:0 
现在问题就是出在这,确实是得到了发送过来的值,如果是不点击按钮弹出的话 就不显示数据
2010-09-20 15:54
zl123
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2010-8-24
得分:0 
实在是不知道是怎么回事~~~
2010-09-20 15:54
zl123
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2010-8-24
得分:0 
试过了,可是还是不能显示数据, 我直接在弹出的那个窗体上的label控件上给了初始值(默认),可是还是显示不出来任何的数据~~~~~
2010-09-20 17:32



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




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

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