Buona sera ragazzi!
Sto provando a creare un prgramma client/server ma non riesco a farlo funzionare!
Allora, io vorrei:
Io uso un protocollo TCP/IP sulla porta 1111 ma il server restituisce messaggi strani. Al primo mex aggiunge caratteri strani, al secondo altri caratteri indecifrabili e alla terza volta non risponde più!codice:Server attende il client; Client si connette; Server gli da il benvenuto ; Client risponde; do{ Server è pronto a ricevere comandi; Client da un comando; Server conferma l'arrivo dei messaggi; Server lo elabora; }while(messaggio == "exit")
Server:
client:codice:int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow) { SOCKET ServerSocket,ClientSocket; bool isClientConnected = false; bool isServerListener = true; WSADATA wsaInfo; WSAStartup(MAKEWORD(2,2), &wsaInfo); ServerSocket = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); //if(ServerSocket == INVALID_SOCKET) throw Error; SOCKADDR_IN Address; Address.sin_family = PF_INET; Address.sin_port = htons(1111); Address.sin_addr.s_addr = INADDR_ANY; bind(ServerSocket,(LPSOCKADDR)&Address, sizeof(Address)); listen(ServerSocket, 1); for(;;) { ClientSocket = accept(ServerSocket, NULL, NULL); isClientConnected = true; string command; Sleep(5); command = Receive(ClientSocket); cout << "Executing command..."; Send(ClientSocket,(char*)command.c_str()); } Send(ClientSocket,"Closing Server..."); WSACleanup(); return 0; } int Send(SOCKET s, char *text) { return send(s, text,lstrlen(text),0); } char* Receive(SOCKET s) { char* buffer; recv(s,buffer,sizeof(buffer),0); return buffer; }
codice:int main(int argn,char **argv) { SOCKET sock; struct sockaddr_in sock_addr; WSADATA data; char command[1024]; char response[1024]; char mex[1024]; if(WSAStartup(MAKEWORD(2,0),&data) != 0) { closesocket(sock); WSACleanup(); return 0; } sock=socket(PF_INET,SOCK_STREAM,0); sock_addr.sin_family=PF_INET; sock_addr.sin_port=htons(1111); sock_addr.sin_addr.S_un.S_un_b.s_b1=127; sock_addr.sin_addr.S_un.S_un_b.s_b2=0; sock_addr.sin_addr.S_un.S_un_b.s_b3=0; sock_addr.sin_addr.S_un.S_un_b.s_b4=1; if(connect(sock,(struct sockaddr*)&sock_addr,sizeof(struct sockaddr)) != 0) { closesocket(sock); WSACleanup(); return 0; } for (;;) { cout << "command: "; cin >> command; Send(sock,command); cout << Receive(sock); } closesocket(sock); WSACleanup(); return 0; } char* Receive(SOCKET s) { char* buffer; recv(s,buffer,sizeof(buffer),0); return buffer; } int Send(SOCKET s, char *text) { return send(s, text,lstrlen(text),0); }
Vi prego corregete questa roba che ci sto sopra da un giorno!
<OT>
Domanda stupida: ma al server c++ potrei dialogare con un server in c# vero?
</OT>
aiutatemi ragazzi! I'm in your hands...
![]()

Rispondi quotando