Wysyłanie (Send) w WinSock

Wysyłanie (Send) w WinSock
C6
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 19 godzin
  • Postów:197
0

Mam pytanie, w zasadzie mały problem.
Jak mam serwer i klienta, to wiem jak wysłać char jakis, cos w tym stylu:

Kopiuj
send( master, sendbuf, strlen( sendbuf ), 0 );

Jednak teraz pojawia sie pytanie, jak wysłać double lub int?

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 21 godzin
0
Kopiuj
send( master,(char*)&Wysylany_Int,sizeof(Wysylany_Int),0);

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon
C6
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 19 godzin
  • Postów:197
0
Kopiuj
send( master,(char*)&n,strlen(n),0);

Jeśli mam takie coś gdzie n to int=1 na przykład, to mi wywala bład ze argument int jest niekompatybilny z const char * :/

_13th_Dragon
miało być sizeof
C6
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 19 godzin
  • Postów:197
0

Czyli cos takiego rozumiem:

Kopiuj
send( master,(char*)&n,sizeof(n),0);

I później na serwerze, żeby mieć int to muszę coś takiego?

Kopiuj
recv( s , (char*)&n, MAXRECV, 0);

?

C6
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 19 godzin
  • Postów:197
0

Mam problem, nie wiem od czego zalezy ale, kiedy wysyłam z clienta do server i mam:
client:

Kopiuj
send( master,(char*)&xk,sizeof(xk),0);

server:

Kopiuj
valread = recv(s,(char *)&nr,sizeof(buffer),0);

Jednak jak chce wyslac pozniej wynik obliczony z tego nr z powrotem do clienta i mam:
server:

Kopiuj
 send(s, (char*)&wynik, sizeof(wynik), 0);

client:

Kopiuj
bytesRecv = recv(master,(char*)&nr,sizeof(nr),0);

To jak wyświetlam nr to mi wywala 0 lub jakąś duża liczbę, a nie to co powinno :/ Gdy pominołem obliczenia na serverze i wysłać chce tylko jakiegoś prostego int to przy wysłaniu pisze jest liczba jest, ale przy recv błąd i nie wiem co źle jest.

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:około 21 godzin
0

Sprawdź ile bajtów odczytałeś bytesRecv oraz poczytaj o tej fladze którą bezmyślne ustawiasz na 0.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
C6
  • Rejestracja:ponad 11 lat
  • Ostatnio:około 19 godzin
  • Postów:197
0

Ok już działa, jak mam:
server:

Kopiuj
send(s, (char*)&koniec, sizeof(int), 0);

client:

Kopiuj
bytesRecv = recv(master,(char*)&nr,sizeof(int),0);

Jednak, jak przesłać jak mam double? jak zmienie sizeof(nr) zeby double przeslac, to jakas inna liczbe pokazuje :/

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.