salve a tutti mi servirebbe un aiuto per la programmazione di un programmino che mi è stato dato per un progetto di informatica.
il programmino è per una connessione socket in cui lanciandolo aspetta fino a che non riceve un pacchetto di dati.
questo pacchetto è settato a un byte.
ora per il mio progetto dovrei rielaborarlo da un byte a due byte che mi servono.
posso semplicemente sostituire i valori del programma o devo cambiare altro??
grazie mille per l'aiuto
codice:// Exampole.cpp : Defines the entry point for the console application. #include <stdio.h> #include <stdlib.h> #include <iostream> #include <fstream> #include <map> #include <utility> // make_pair #include <string> #include <winsock2.h> #include <string.h> using namespace std; #define FLASH #define WAIT 0 #define GO 1 #define STOP 2 #define QUIT 3 #define DISCONNECT 4 #define CONNECT 5 int count = 0; int state = WAIT; char buf[128]; DWORD WINAPI ThreadProc(LPVOID lpParameter){ SOCKET* client; int n; client = (SOCKET *)lpParameter; while(1){ n = recv(*client,buf,1,0); if(n <= 0){ state = QUIT; return 1; } switch(buf[0]){ case 'I': state = GO; break; case 'S' : state = STOP; break; case 'Q' : state = QUIT; break; case 'D' : state = DISCONNECT; break; case 'C' : state = CONNECT; break; default: break; } printf("State is: %d",state); } return 1; } int main(int argc, char* argv[]) { /* GESTIONE SOCKET */ WSADATA data_ws; // inizializzo la variabile che contiene le primitive di Winsock WORD p; int lun; SOCKET sock, sock_client; struct sockaddr_in sock_addr, sock_addr_client; int n; HANDLE h; int err=0; // inizializzo una variabile per gestire gli errori unsigned char ip[4]; ip[0] = 127; ip[1] = 0; ip[2] = 0; ip[3] = 1; DWORD id1; p=MAKEWORD(2,0); // creo la variabile p che contiene la versione della wsock32.dll err=WSAStartup(p,&data_ws); // inizializzo la wsock32.dll verificandone la mancanza di errori sock=socket(PF_INET,SOCK_STREAM,0); sock_addr.sin_family=PF_INET; // indico il protocollo utilizzato (TCP/IP) sock_addr.sin_port=htons(63000); //indico la porta a cui connettere il socket sock_addr.sin_addr.S_un.S_un_b.s_b1=ip[0]; // indico l'indirizzo IP sock_addr.sin_addr.S_un.S_un_b.s_b2=ip[1]; sock_addr.sin_addr.S_un.S_un_b.s_b3=ip[2]; sock_addr.sin_addr.S_un.S_un_b.s_b4=ip[3]; err=bind(sock,(struct sockaddr*)&sock_addr,sizeof(struct sockaddr)); err=listen(sock,1); lun = sizeof(struct sockaddr_in); //rimango in attesa della connessione da parte di un process... sock_client = accept(sock,(struct sockaddr*)&sock_addr_client,&lun); //avvio il processo di lettura if( (h=CreateThread(NULL,0,ThreadProc,&sock_client,0,&id1)) == NULL ) return FALSE; //avvio il processo di inventory... printf("Connession Accettata\n"); while(state!=QUIT){ if(state == CONNECT){ printf("Connected..\n"); } if(state == GO) { printf("State GO\n"); Sleep(1000); } if(state == STOP){ state = WAIT; } if(state == WAIT){ printf("State Wait\n"); Sleep(100); } if(state == DISCONNECT){ state = WAIT; buf[0] = 'O'; buf[1] = 'K'; send(sock_client,buf,2,0); } } WaitForSingleObject(h,50); closesocket(sock_client); closesocket(sock); Sleep(100); printf("Termine Programma\n"); WSACleanup(); return 0; }

Rispondi quotando