[c#] problemy z MP co to jest Invoke ? 5008 5

O temacie

Autor RafalBudzis

Zaczęty 7.10.2012 roku

Wyświetleń 5008

Odpowiedzi 5

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
I jak to działa i jak to zastąpić lub wrzucić do projektu XNA patrzyłem sobie na kody klientów socketów i użyłem sobie tego kodu

http://csharp.net-informations.com/communications/csharp-chat-client.htm

W aplikacji okienkowej wszystko ładnie już działa teraz chcę to przerzucić do XNA lecz XNA nie ogarnia tego

       private void msg()
        {
            if (this.InvokeRequired)
                this.Invoke(new MethodInvoker(msg));
            else
                textBox1.Text = textBox1.Text + Environment.NewLine + " >> " + readData;
        }

Nagłówki są wszystkie takie same jak na aplikacji internetowej czyli

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Threading;
using System.Diagnostics;
using System.Windows.Forms;

Miał by ktoś jakiś fajny tutek jak zrobić klienta ? może jakiś inny sposób zastosować ?

Adanos

Adanos

Administrator
Szara eminencja
posty5204
Propsy3870
ProfesjaProgramista
  • Administrator
  • Szara eminencja
Jeśli chodzi o invoke: http://msdn.microsoft.com/en-us/library/zyzhdc6b.aspx

Co oznacza "XNA nie ogarnia tego"? Nie kompiluje się, źle działa?

RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
Co oznacza "XNA nie ogarnia tego"? Nie kompiluje się, źle działa?
#msg1055913labirynt_3__test_gry#msg1055913 does not contain a definition for #msg1055913InvokeRequired#msg1055913 and no extension method #msg1055913InvokeRequired#msg1055913 accepting a first argument of type #msg1055913labirynt_3__test_gry#msg1055913 could be found (are you missing a using directive or an assembly reference?)

Pewnie chodzi o klase w okienku mam

   public partial class Form1 : Form
    {

a w XNA mam zwykła i nie wiem czy można zrobić z tego forme i jak to bedzie działało

public class Client
    {


RafalBudzis

RafalBudzis

Użytkownicy
posty1967
Propsy808
ProfesjaSkrypter
  • Użytkownicy
Nie mam nawet nie wiem jak by to miało wyglądać w gierce mam 5 stringów do których miało by się to zapisywać

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Threading;
using System.Diagnostics;
using System.Windows.Forms;

namespace labirynt_3__test_gry
{
    public class Client
    {
        System.Net.Sockets.TcpClient clientSocket = new System.Net.Sockets.TcpClient();
        NetworkStream serverStream = default(NetworkStream);
        string readData = null;

        public Client() { Start("Gracz 1"); }

        private void Start(String nazwa)
        {
            readData = "Laczenie z Serwerem ...";
            msg();
            try
            {
                clientSocket.Connect("127.0.0.1", 8888);
                serverStream = clientSocket.GetStream();

                byte[] outStream = System.Text.Encoding.ASCII.GetBytes(nazwa + "$");
                serverStream.Write(outStream, 0, outStream.Length);
                serverStream.Flush();

                Thread ctThread = new Thread(getMessage);
                ctThread.Start();
            }
            catch
            {
                //MessageBox.Show("Niemozna nawiazac polaczenia mozliwe ze serwer jest wyłączony", "Błąd",MessageBoxButtons.OK,MessageBoxIcon.Error);
            }


        }
        Boolean pentl;
        private void getMessage()
        {
            pentl = true;
            while (pentl)
            {
                serverStream = clientSocket.GetStream();
                int buffSize = 0;
                byte[] inStream = new byte[10025];
                buffSize = clientSocket.ReceiveBufferSize;
                serverStream.Read(inStream, 0, buffSize);
                string returndata = System.Text.Encoding.ASCII.GetString(inStream);
                readData = "" + returndata;
                msg();

            }
        }

        public void send_msg(String ciag)
        {
            byte[] outStream = System.Text.Encoding.ASCII.GetBytes(ciag + "$");
            serverStream.Write(outStream, 0, outStream.Length);
            serverStream.Flush();
        }

        private void Show_msg(String msg) {
            Game1.msg_net_1 = Game1.msg_net_2;
            Game1.msg_net_2 = Game1.msg_net_3;
            Game1.msg_net_3 = Game1.msg_net_4;
            Game1.msg_net_4 = Game1.msg_net_5;
            Game1.msg_net_5 = Convert.ToString(msg);
        }

       

        private void msg()
        {
            if (this.InvokeRequired)
            {
                this.Invoke(new MethodInvoker(msg));
            else
            {
                Show_msg(readData);
            }
        }

    }
}

całkowicie tego nie ogarniam przydało by się przeczytać coś grubszego z kilkoma przykładami.



0 użytkowników i 1 Gość przegląda ten wątek.
0 użytkowników
Do góry