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