2009-12-04 5 views
0

시작하고, 양식을 보여주고 서버에 연결하여 메시지를받는 프로그램을 작성했습니다. 그러나 시작할 때 아무 일도 일어나지 않습니까?C# 채팅 프로그램 Lidgren

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(); 
     } 
    } 
} 
+1

ReceiveMessages 또는 Update 메서드를 호출하지 않는 것처럼 보입니까? – stuartd

+0

컨트롤의 형식은 무엇입니까? InitializeComponent()는 어떻게 보이나요? – Jocke

답변

1

귀하는 귀하의 방법을 요구하지 않습니다.

시도 :

static void Main(string[] args) 
{ 
    Form1 form = new Form1(); 
    ReceiveMessages(); 
    // or 
    Update("Me"); 
} 

당신이 양식에 어떤 버튼이 있습니까? 일종의

2

님의 선언 좀 더 정보가 필요합니다

private NetClient client;   
    private NetBuffer buffer; 

그러나 당신의 연결() 메소드는 새로운 지역 클라이언트에게 때 메서드가 반환 범위를 벗어난 것버퍼를 구축합니다. 인스턴스 클라이언트버퍼은 결코 초기화되지 않으며 ReceiveMessages() 메소드에서 사용할 때 의미가 없습니다.

관련 문제