Ok, thanks in advice for your help! I'm creating two new programs: a client and a server: they have to exchange shot msgs, with UDP.
But my client doesn't succeed in creating the socket:
Code:
#if defined WIN32
#include <winsock.h>
#else
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <netdb.h>
#endif
#include <stdio.h>
#include <string.h>
#define MAX 100
void printErr(char *message) {
fprintf(stdout, message); }
void ClearWinSock() {
#if defined WIN32
WSACleanup();
#endif
}
int main (void) {
int sock;
struct sockaddr_in echoServAddr;
struct sockaddr_in fromAddr;
unsigned short echoServPort;
unsigned int fromSize;
char *servIP;
char echoString[MAX];
char echoBuffer[MAX];
int echoStringLen, respStringLen;
servIP = "127.0.0.1";
do {
fprintf(stdout, "\nInput:\n");
fscanf(stdin, "%s" ,echoString);
fprintf(stdout, "%s", echoString);
} while (strlen(echoString) > MAX);
echoStringLen = strlen(echoString);
echoServPort = 23477;
/* this fails*/
if ((sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0)
{ printErr("\nSocket() creation failed."); }
memset(&echoServAddr, 0, sizeof(echoServAddr));
memset(&echoBuffer, 0, sizeof(echoBuffer));
echoServAddr.sin_family = AF_INET;
echoServAddr.sin_port = htons(echoServPort);
echoServAddr.sin_addr.s_addr = inet_addr(servIP);
if (sendto(sock, echoString, echoStringLen, 0,
(struct sockaddr *) &echoServAddr, sizeof(echoServAddr)) != echoStringLen)
{ printErr("\nsendto() error."); }
fromSize = sizeof(fromAddr);
if ((respStringLen = recvfrom(sock, echoBuffer, MAX, 0,
(struct sockaddr *) &fromAddr, &fromSize)) != echoStringLen)
{ printErr("\nrecvfrom() error."); }
fprintf(stdout, "\nString received = %s", echoBuffer);
closesocket(sock);
#if defined WIN32
WSACleanup();
fprintf(stdout, "\n");
system("pause");
#endif
return EXIT_SUCCESS;
}
And I don't know why. Can you help?
PS: I use Eclipse on Windows...