Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

ZIR

Frischling

  • »ZIR« ist der Autor dieses Themas
  • Private Nachricht senden

1

28.01.2011, 13:45

bad_alloc beim Benutzen von SFML Packet

Hallo,
ich habe ein kleines Problem. Und zwar kriege ich bei folgendem Quellcode:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <SFML/Window.hpp>
#include <SFML/Network.hpp>

#include <iostream>

int main()
{
    sf::SocketTCP Socket;
    if (!Socket.Connect(4567, "127.0.0.1") == sf::Socket::Done)
    {
        std::cout<<"Konnte keine Verbindung zu dem Server aufbauen"<<std::endl;
    }

    sf::Packet Packet;
    std::string Message;

    bool Connected = true;

    while(Connected)
    {
        std::getline(std::cin, Message);
        Packet<<Message;
        Connected = (Socket.Send(Packet) == sf::Socket::Done);
        Message="";
        Packet.Clear();
    }
    
    Socket.Close();

    return 0;
}

Immer in der Zeile

C-/C++-Quelltext

1
Packet<<Message;

einen Laufzeitfehler und zwar bad_alloc.
Ich hab alles genauso wie in den SFML Tutorials gemacht aber trotzdem funktioniert es nicht.
Würde mich sehr über Hilfe freuen, da ich keine Ahnung habe woran es liegen könnte.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

2

28.01.2011, 13:55

ich find jetzt keinen fehler. kannst du den server posten damit ichs ausprobieren kann?

edit: verwendest du die richtigen libs und dlls? welche IDE verwendest du und woher hast du die libs und dlls?
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »NachoMan« (28.01.2011, 14:01)


Beiträge: 721

Wohnort: /dev/null

Beruf: Software-Entwickler/Nerd

  • Private Nachricht senden

3

28.01.2011, 14:12

Was macht das im Projekt-Forum?

ZIR

Frischling

  • »ZIR« ist der Autor dieses Themas
  • Private Nachricht senden

4

28.01.2011, 14:20

1.: Sorry habe vergessen das Forum zu wechseln, bei gelegenheit kann das ja mal nen Mod verschieben.
2.: Ich verwende vc++2010. Libs und dlls habe ich selber kompiliert und benutze
sfml-window.lib
sfml-network.lib
sfml-system.lib
3.:
Code für den Server:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <SFML/Window.hpp>
#include <SFML/Network.hpp>

#include <iostream>

int main()
{
    std::cout<<"Server gestartet"<<std::endl;
    sf::SocketTCP Listener;

    if (!Listener.Listen(4567))
    {
        std::cout<<"Fehler beim bindne des Ports"<<std::endl;
    }

    sf::SelectorTCP Selector;
    Selector.Add(Listener);

    while(true)
    {
        unsigned int NbSockets = Selector.Wait();

        for (unsigned int i=0; i<NbSockets; i++)
        {
            sf::SocketTCP Socket = Selector.GetSocketReady(i);

            if (Socket==Listener)
            {
                sf::IPAddress Address;
                sf::SocketTCP Client;
                Listener.Accept(Client, &Address);

                std::cout<<"Client: "<<Address<<" hat die Verbindung aufgebaut"<<std::endl;

                Selector.Add(Client);
            }
            else
            {
                sf::Packet Packet;
                if (Socket.Receive(Packet) == sf::Socket::Done)
                {
                    std::string Message;
                    Packet>>Message;
                    std::cout<<"Ankommende Nachricht von einem Client: "<<Message<<std::endl;
                }
                else
                {
                    Selector.Remove(Socket);
                    std::cout<<"Ein Client hat die Verbindung abgebrochen"<<std::endl;
                }
            }
        }
    }
    

    return 0;
}

5

28.01.2011, 14:44

Hab deinen Code getest: Bei mir läufts ohne Fehler.




Gruß
SaRu_

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

6

28.01.2011, 14:54

bei mir läufts ebenfalls.
einfach mal statisch linken. vllt liegt die falsche dll im system32 ordner und wird verwendet?
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

ZIR

Frischling

  • »ZIR« ist der Autor dieses Themas
  • Private Nachricht senden

7

28.01.2011, 15:28

Bei mir will es einfach nicht laufen.
Könnte mir vielleicht wer mal seine libs und dlls hochladen, damit ich das auschließen kann,dass es daran liegt?

8

28.01.2011, 16:56

Ok hier sind meine Libs: SFML 1.6 für VC2010

Gruß
SaRu_

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »SaRu« (28.01.2011, 20:00)


ZIR

Frischling

  • »ZIR« ist der Autor dieses Themas
  • Private Nachricht senden

9

28.01.2011, 17:36

Danke mit den Librarys funktioniert das jetzt.
Aber ich weiß immernoch nicht warum meine selbstkompilierten für alle anderen Projekte funktioniert haben, nur für das nicht.

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

10

28.01.2011, 19:18

vllt gabs nen fehler bei den network libs und du verwendest sie heute das erste mal?
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

Werbeanzeige