C programming socket WSADATA problem [message #1716722] |
Mon, 07 December 2015 13:12  |
Eclipse User |
|
|
|
Hello everyone.
I'm starting programming socket in C. I am using Eclipse and I have installed MinGW compiler. When I compile a simple starter program I have this error:
Field 's_addr' could not be resolved
Symbol 'AF_INET' could not be resolved
Symbol 'IPPROTO_TCP' could not be resolved
Symbol 'PF_INET' could not be resolved
Symbol 'SOCK_STREAM' could not be resolved
Type 'WSADATA' could not be resolved
I have included in the code and also added wsock32 to the project library. It seems not recognizing the WSADATA structure I think. What's the problem? Thanks.
|
|
|
|
Re: C programming socket WSADATA problem [message #1716874 is a reply to message #1716731] |
Tue, 08 December 2015 12:46   |
Eclipse User |
|
|
|
It Seems resolved adding #include <winsock2.h>
Using Eclipse with MinGW compiler . This simple starter program creates a client/server communication, server side.
#include <stdio.h>
#include <stdlib.h> // for atoi()
#include <winsock2.h>
#include <winsock.h>
#define PROTOPORT 5193 //default protocol port number
#define QLEN 6 // size of request queue
void ErrorHandler (char *errorMessage) {
printf (errorMessage);
}
void ClearWinSock() {
WSACleanup ();
}
int main (int argc, char *argv[]) {
int port;
if (argc>1) {
port = atoi (argv[1]); //if argument specified convert argument to binary
}
else
port = PROTOPORT; //use dafault port number
if (port < 0) {
printf ("bad port number %s \n", argv[1]);
return 0;
}
WSADATA wsaData;
int iResult = WSAStartup (MAKEWORD(2,2), &wsaData);
if (iResult != 0) {
ErrorHandler ("Error at WSAStartup()\n");
return 0;
}
// CREAZIONE DELLA SOCKET
int MySocket;
MySocket = socket (PF_INET, SOCK_STREAM, IPPROTO_TCP);
if (MySocket < 0) {
ErrorHandler ("socket creation failed.\n");
ClearWinSock();
return 0;
}
// ASSEGNAZIONE DI UN INDIRIZZO ALLA SOCKET
struct sockaddr_in sad;
memset (&sad, 0, sizeof (sad)); //ensures that extra bytes contain 0
sad.sin_family = AF_INET;
sad.sin_addr.s_addr = inet_addr ("127.0.0.1");
sad.sin_port = htons (port); //host to network short
//Assegnazione porta e ip alla socket e verifica presenza di eventuali errori
if (bind (MySocket, (struct sockaddr*) & sad, sizeof (sad)) < 0) {
ErrorHandler ("bind() failed.\n");
closesocket (MySocket);
ClearWinSock ();
return 0;
}
// SETTAGGIO DELLA SOCKET ALL'ASCOLTO
if (listen (MySocket, QLEN) < 0) {
ErrorHandler ("listen() failed.\n");
closesocket (MySocket);
ClearWinSock ();
return 0;
}
// ACCETTARE UNA NUOVA CONNESSIONE
struct sockaddr_in cad; //structure for the client address
int clientSocket; // socket descriptor for the client
int clientLen; //the size of the client address
printf ("Waiting for a client to connect...");
while (1) {
clientLen = sizeof (cad); //set the size of the client address
if ((clientSocket = accept (MySocket, (struct sockaddr*) &cad, &clientLen)) < 0) {
ErrorHandler ("accept() failed.\n");
// CHIUSURA DELLA CONNESSIONE
closesocket (MySocket);
ClearWinSock ();
return 0;
}
printf ("Handling client %s\n", inet_ntoa (cad.sin_addr));
}
}
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.04159 seconds