首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C#聊天程序Lidgren

C#聊天程序Lidgren
EN

Stack Overflow用户
提问于 2009-12-04 20:24:26
回答 2查看 943关注 0票数 0

我写了下面的程序,它应该启动,显示表单,并连接到服务器,并获得一条消息。然而,当我启动它时,什么也没有发生?

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Lidgren.Network;
using System.Threading;

namespace WindowsGame2
{
    public partial class Form1 : Form
    {
        private NetClient client;
        private NetBuffer buffer;

        public Form1()
        {
            InitializeComponent();
        }

        private void Connect()
        {
            NetConfiguration config = new NetConfiguration("xesh");
            NetClient client = new NetClient(config);

            client.Connect("75.127.105.216", 14242);

            NetBuffer buffer = client.CreateBuffer();
        }

        private void ReceiveMessages()
        {
            Connect();
            bool keepGoing = true;
            while (keepGoing)
            {
                NetMessageType type;
                while (client.ReadMessage(buffer, out type))
                {
                    switch (type)
                    {
                        case NetMessageType.DebugMessage:
                            Console.WriteLine(buffer.ReadString());
                            break;

                        case NetMessageType.StatusChanged:
                            Console.WriteLine("New status: " + client.Status + " Reason: " + buffer.ReadString());
                            break;

                        case NetMessageType.Data:
                            break;
                    }
                }
            }
        }

        private void Update(string str)
        {
            ReceiveMessages();
            textBox1.AppendText(str + "\r\n");
        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        static void Main(string[] args)
        {
            Form1 form = new Form1();
        }
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-12-04 20:40:26

你没有调用你的方法。

尝试:

代码语言:javascript
复制
static void Main(string[] args)
{
    Form1 form = new Form1();
    ReceiveMessages();
    // or 
    Update("Me");
}

您的表单上有按钮吗?我需要更多的信息

票数 1
EN

Stack Overflow用户

发布于 2009-12-04 21:30:48

您已声明:

代码语言:javascript
复制
    private NetClient client;        
    private NetBuffer buffer;

但是,Connect()方法构造了新的本地客户端缓冲区,当该方法返回时,它们将超出范围。实例的客户端缓冲区永远不会初始化,因此在ReceiveMessages()方法中使用时没有任何意义。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1846638

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档