I have decided to write client-server aplications on my own.
so far I manage to do this:
client.c
server.cCode:
#include <stdio.h>
#include <string.h>
#include <winsock2.h>
#define version 0x002
#define MYPORT 3490
int main()
{
WSADATA wsaData;
SOCKET socketfd;
struct sockaddr_in server_addr;
char message[]="Hello FANTA!";
if(WSAStartup(MAKEWORD(version,2),&wsaData))
{
fprintf(stderr,"\nError intializing winsock library!");
return 1;
}
server_addr.sin_family=AF_INET;
server_addr.sin_port=htons(MYPORT);
server_addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
memset(&(server_addr.sin_zero),'\0',8);
socketfd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(socketfd==INVALID_SOCKET)
{
fprintf(stderr,"\nError creating socket!");
return 1;
}
if(connect(socketfd,(const struct sockaddr*)&server_addr,sizeof(struct sockaddr)))
{
fprintf(stdout,"Could not be connected!");
return 1;
}
if(send(socketfd,message,lstrlen(message),0)==SOCKET_ERROR)
{
fprintf(stderr,"Data could not be send!");
return 1;
}
}
As you might guess it's not working.Code:
#include <stdio.h>
#include <string.h>
#include <winsock2.h>
#define version 0x002
#define MYPORT 3490
#define bufsize 128
int main()
{
WSADATA wsaData;
SOCKET socketfd,new_fd;
struct sockaddr_in my_addr,client_sockaddr;
char message[bufsize];
int size;
if(WSAStartup(MAKEWORD(version,2),&wsaData))
{
fprintf(stderr,"\nError intializing winsock library!");
return 1;
}
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(MYPORT);
my_addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
memset(&(my_addr.sin_zero),'\0',8);
socketfd=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(socketfd==INVALID_SOCKET)
{
fprintf(stderr,"\nError creating socket!");
return 1;
}
if(bind(socketfd,(const struct sockaddr*)&my_addr,sizeof(struct sockaddr))==SOCKET_ERROR)
{
fprintf(stderr,"Error binding");
return 1;
}
if(listen(socketfd,1)==SOCKET_ERROR)
{
fprintf(stderr,"Error listening!");
return 1;
}
size=sizeof(struct sockaddr);
new_fd=accept(socketfd,(struct sockaddr*)&client_sockaddr,&size);
if(new_fd==INVALID_SOCKET)
{
fprintf(stderr,"\nError accepting connection!");
return 1;
}
while(1)
{
int get;
get=recv(new_fd,message,bufsize-1,0);
if(get==0)
break;
else
if(get==SOCKET_ERROR)
{
fprintf(stderr,"\nError receiving data!");
return 1;
}
else
{
message[get]=0;
fprintf(stdout,"%s ",message);
}
}
closesocket(new_fd);
closesocket(socketfd);
WSACleanup();
}
I start server.exe and and after that client.exe, but nothing is happening I see no message on server window.
I feel I'm very near.
I'm total beginer in this stuff so any help is more than welcome.
Thanks