La mia idea sarebbe di mandare un messaggio per ora in locale ma quando eseguo il programma mi dice che ho ricevuto -1 byte e quando stampo a video il messaggio mi dice - ecco i sorgenti:
Server:
Client:codice:#include <stdio.h> #include <winsock.h> int main() { int err, lun; WSADATA data; WORD p; p = MAKEWORD(2,0); err = WSAStartup(p,&data); SOCKET sock, client; struct sockaddr_in sock_addr, client_addr; sock=socket(PF_INET,SOCK_STREAM,0); sock_addr.sin_family=PF_INET; sock_addr.sin_port=htons(1010); sock_addr.sin_addr.s_addr=INADDR_ANY; err = bind(sock,(struct sockaddr*)&sock_addr,sizeof(struct sockaddr_in)); err = listen(sock,1); lun = sizeof (struct sockaddr); client = accept(sock,(struct sockaddr*)&client_addr,&lun); if (err!=0) printf ("Errore connessione"); char recvbuf[32]; int bytesRecv=SOCKET_ERROR; for( ; ; ){ bytesRecv=recv(sock, recvbuf, 32, 0 ); printf( "Bytes ricevuti: %d\n", bytesRecv); printf("Messaggio Ricevuto: %s\n", recvbuf); } WSACleanup(); return 0; }
codice:#include <winsock.h> #include <stdio.h> int main() { SOCKET sock; struct sockaddr_in sock_addr; WSADATA data; WORD p; p=MAKEWORD(2,0); WSAStartup(p,&data); sock=socket(PF_INET,SOCK_STREAM,0); sock_addr.sin_family=PF_INET; sock_addr.sin_port=htons(1010); 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; connect(sock,(struct sockaddr*)&sock_addr,sizeof(struct sockaddr)); int bytesSent; char sendbuf[32] = "ciao"; for( ; ; ) { bytesSent = send(sock, sendbuf, strlen(sendbuf),0); printf( "Messaggio: %s\n", sendbuf ); printf("Bytes Inviati: %ld\n",bytesSent); } closesocket(sock); WSACleanup(); return 0; }

Rispondi quotando