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

[C++] Odbieranie danych


Rekomendowane odpowiedzi

Opublikowano

Witam, otóż mam pytanie jak odebrać dane wysłane przez klienta?

 

Serwer w C++.

Serwer nie odbiera danych przesłanych z klienta.

 

Klient: (Przez przeglądarkę)

<!DOCTYPE>
<html>
<head>
<title>Klient</title>
<meta charset='iso-8859-2'>
<script src="jquery.js" type="text/javascript"></script>
<script src="socket.js" type="text/javascript"></script>
</head>
<script type="text/javascript">
  var socket = io('http://localhost:7015');
  socket.on('connect', function () {
    socket.send('hi');

    socket.on('message', function (msg) {
      // my msg
    });
  });
</script>
<body>

</body>
</html>

Łączy ze serwerem bez problemu.

 

 

Socket io ze strony http://Socket.IO

 

 

1377531174-U173186.png

Weteran
Opublikowano

Po co założyłeś drugi taki sam temat?

Ta biblioteka zdaję się być frameworkiem do WebSocketa, serwer więc musi obsługiwać protokół WebSocket. Nigdy z niego nie korzystałem, ale wygląda bardzo podobnie do HTTP. Chwila szukania i masz: https://github.com/m8rge/cwebsockethttp://libwebsockets.org/trac/libwebsockets

Niektóre przeglądarki mogą mieć wyłączoną obsługę WebSocket, a te starsze w ogóle jej nie mieć zaimplementowanej, więc lepiej napisać apleta lub użyć php/asp.net/coś_innego + ajax.

Opublikowano

Dobra poradziłem sobie teraz mam pytanie jak zrobić aby serwer przetworzył informacje np. serwer otrzyma wiadomość "zaloguj" to wykona funkcje zaloguj?

1377531174-U173186.png

Opublikowano

Chcę wiedzieć jak napisać kod który po otrzymaniu wiadomości 'czesc' (Wysłaną przez klienta C++) wykona funkcje czesc na przykład w funkcji printf("Hello");

1377531174-U173186.png

Opublikowano

a po co Ci nauka, skoro możesz o wszystko spytać na forum zamiast poszukać na necie?

sformułuj odpowiednie pytani > przetłumacz na angielski > wpisz w google.

<>

Opublikowano

Używam Visual C++ 2010

Kod:

#include <StdAfx.h>
#include <stdio.h>
#include <stdlib.h>
#include <Ws2tcpip.h>
#include <mysql.h>
#include <Windows.h>
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <winsock2.h>

#pragma comment (lib, "Ws2_32.lib")
#pragma comment (lib, "Mswsock.lib")
#pragma comment (lib, "AdvApi32.lib")
#pragma comment (lib, "C:/***/libmysql.lib")

char DEFAULT_PORT[64];

using namespace std;

int main(){

iResult = WSAStartup( MAKEWORD( 2, 2 ), &wsaData );
printf("--> ", wsaData.szDescription);
if ( iResult != 0 ){
    return 1;
} else {
}

ZeroMemory( &hints, sizeof( hints ) );

hints.ai_family   = AF_INET;   
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;
hints.ai_flags    = AI_PASSIVE;  

iResult = getaddrinfo( NULL, DEFAULT_PORT, &hints, &result );
if( iResult != 0 ){
    WSACleanup();
    return 2;
}

if( ListenSocket == INVALID_SOCKET ){
    freeaddrinfo( result );
    WSACleanup();
    return 3;
}

iResult = bind( ListenSocket, result->ai_addr, result->ai_addrlen );
if( iResult == SOCKET_ERROR ){
    closesocket( ListenSocket );
    freeaddrinfo( result );
    WSACleanup();
    return 4;
}
freeaddrinfo(result);

iResult = listen( ListenSocket, SOMAXCONN );
if( iResult == SOCKET_ERROR ){
    closesocket( ListenSocket );
    freeaddrinfo( result );
    WSACleanup();
    return 5;
}

//Komunikacja
int ret;
int iMessageLen;
char* szRepMessage;
szRepMessage = "Odebrano";
char szInBuffer[255];
int iBufferLen;

for(;1;){   
   ClientSocket = accept( ListenSocket,clientInfo, NULL );
   if( ClientSocket == INVALID_SOCKET ){
        continue;
   }
   else{
	printf("--> Gracz zostal polaczony.\n");
		cout<<"*** Oczekiwanie na odpowiedz..."<<endl;
		ret = recv(ClientSocket, szInBuffer, sizeof(szInBuffer), 0);
		iBufferLen = ret;
		szInBuffer[iBufferLen] = '\0';
		cout<<"*** Otrzymano komunikat o tresci \""<<szInBuffer<<"\""<<endl;
		iMessageLen = strlen(szRepMessage);
		ret = send(ClientSocket, szRepMessage, iMessageLen, 0);
		printf("\n");
  }
 }
 closesocket( ClientSocket );
 WSACleanup();
 return 0;
}

1377531174-U173186.png

Weteran
Opublikowano

Jednowątkowy serwer do gry? To się chyba mija z celem.

To, czy serwer potrzebuje dodatkowego wątku, to już zależy bardziej od mechaniki gry. A Jeśli chodzi ci o budowanie serwera wieloklientowego, to budowanie go na wątkach, jest jednym z najgorszych sposobów. Jest wiele lepszych metod.

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...