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:
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;
}
Client:
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;
}