Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Problem z powtarzającym sie tekstem(networking)


Rekomendowane odpowiedzi

Opublikowano

Witam jako iż dopiero zaczynam swoją przygodę z siecią to powstają na mojej drodze pewne problemy, na dzień dzisiejszy tworze mini czat wersja uboga, ogólnie chodzi o to że mam serwer i clienta, w cliencie podaje nick i tekst który wysyłam, lecz tekst który napisze za pierwszym razem to powtarza się cały czas, co napisze to i tak będzie to samo pisać np. wchodze w clienta wpisuje nick i tekst : Siemka, w serverze dobrze się wyświetla Nick:Siemka, lecz gdy chce napisać drugi tekst np. hmm to wygląda to tak w serverze Nick:siemka. Screen : http://scr.hu/5nr8/zqa5r

 
Kod servera: 

#include <SFML\Network.hpp>
#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
	sf::UdpSocket server;
	unsigned short s = 5601; //Port serwera
	unsigned short c = 5602; //Port clienta
	server.bind(s); //ustawienie portu serwera
	string tmp = ""; //zmienna zapisywująca pakiet przychodzacy
	string nick = "";
	sf::Packet pak; //pakiet do zapisywania informacji o przychodzącyh
	sf::IpAddress ip_c = sf::IpAddress::getLocalAddress(); //adres ip clienta

	bool done = false;
	while(!done)
    {
        if(server.receive(pak, ip_c, c) != sf::Socket::Done)
        {
            cout << "Dane nie zostaly odebrane!\n";
        }
        pak >> tmp >> nick;
        cout << nick << ": ";
        cout << tmp << endl;
    }

}

 
Kod clienta:

#include <SFML\Network.hpp>
#include <iostream>
#include <conio.h>

using namespace std;

int main()
{
	sf::UdpSocket client; //stworzenie gniazda clienta
	unsigned short s = 5601; //port serwera
	unsigned short c = 5602; //port clienta
	client.bind(c); //przypiswanie portu clienta
	string tmp; //string do wyslania
	string nick;
	sf::Packet pak; //stworzenie pakietu
	sf::IpAddress ip_s = sf::IpAddress::getLocalAddress(); //adres ip clienta
		//wiadomosc w pakiecie do wyslania

	bool done = false;

	cout << "Podaj swoj nick: ";
	cin >> nick;

	while(!done)
    {
        cout << "Podaj tekst do wyslania: ";
        cin >> tmp;
        pak << tmp << nick;
        if(client.send(pak, ip_s, s) != sf::Socket::Done) //wyslij pakiet na ip i port serwera
        {
            cout << "Dane nie zostaly wyslane!\n";
        }
    }
}

Szukasz kogoś kto wykona grafikę, logo do drużyny esportowej? 


Napisz do mnie postaram się wykonać prace jak najlepiej.


Aktualnie nie mam czasu na wykonywanie grafik.

Opublikowano

Może sf::UdpSocket::receive nie czyści sf::Packet? Spróbuj przed odebraniem wywołać sf::Packet::clear()

Racja, o ile uzycie funkcji packet::clear na receive w serverze nie działało, tak przy send w cliencie juz pomogło.

Szukasz kogoś kto wykona grafikę, logo do drużyny esportowej? 


Napisz do mnie postaram się wykonać prace jak najlepiej.


Aktualnie nie mam czasu na wykonywanie grafik.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...