Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Language IDEs » C / C++ IDE (CDT) » C Socket Programming
C Socket Programming [message #1507192] Thu, 11 December 2014 11:54
Fabio Maturo is currently offline Fabio MaturoFriend
Messages: 2
Registered: December 2014
Junior Member
Hi everyone,

I'm using C Socket for a simple communication between an Ethernet Connection.

The two end points are: Notebook (it's the machine where the Server is running) and an FPGA (where the client should run), the protocol in use must be UDP.

I read on internet that it's possible to solve some problems of UDP by using the UDP with connection, so, that's what I'm trying to develop.

Below there is the code of server and client.

SERVER:
#define SERVERADDRESS "10.3.0.72"
#define MAXBUF 128

int main(int argc, char * argv[])
{
	int server_socket, connect_socket, retcode, nw;
	socklen_t client_addr_len;
	struct sockaddr_in server_addr, client_addr;
	char buffer[MAXBUF];
	char * client_address; // lo useremo come indirizzo del client in formato stringa

	// apertura socket del server
	if (((server_socket = socket(PF_INET,SOCK_DGRAM,0))) == -1)
	{
		perror("Error in server socket()");
		exit(-1);
	}

	// preparazione dell'indirizzo locale del server
	server_addr.sin_family = AF_INET;
	server_addr.sin_port = htons(0);
	server_addr.sin_addr.s_addr = inet_addr(SERVERADDRESS);
	memset(server_addr.sin_zero,'/0',sizeof(server_addr.sin_zero));

	// bind del socket
	if ((retcode = bind (server_socket, (struct sockaddr*)  &server_addr, sizeof(server_addr))) == -1)
	{
		perror("Error in server socket bind()");
		exit(-1);
	}

	// listen del socket
	if ((retcode = listen(server_socket, 10)) == -1)
	{
		perror("Error in server socket listen()");
		exit(-1);
	}

	printf("Server ready (CTRL-C quits)\n");

	client_addr_len = sizeof(client_addr);

	// cicla in attesa di connessione
	while (1)
	{
		// accetta le connessioni
		if ((connect_socket = accept(server_socket, (struct sockaddr *)&client_addr, &client_addr_len)) == -1)
		{
			perror("Error in accept()");
			exit(-1);
		}

		// memorizzo l'indirizzo del client in formato stringa
		client_address = inet_ntoa(client_addr.sin_addr);

		printf("\nClient @ %s connects on socket %d\n", client_address, connect_socket);

		// riceve i messaggi e li stampa in output
		while ((retcode = recv(connect_socket,buffer,MAXBUF,0)) > 0)
		{
			buffer[retcode] = '\0'; // buffer dev'essere una stringa
			printf(">> %s: %s\n", client_address, buffer);
		}

		// chiudo la socket
		close(connect_socket);
	}
}


CLIENT:
#define SERVERADDRESS "10.3.0.72"

int main(int argc, char *argv[])
{
	int client_socket;
	struct sockaddr_in server_addr;
	char *msg = 'CIAO SONO IL CLIENT';
	size_t msglen;
	int retcode;

	// preparo la variabile msg in base alla dimensione del messaggio inserito dall'utente
	//msg = malloc(msg*sizeof(char));

	// apertura socket del client
	if ((client_socket = socket(PF_INET, SOCK_DGRAM, 0)) == -1)
	{
		perror("Error in socket()");
		exit(-1);
	}

	// preparazione dell'indirizzo del server con cui connettere il socket
	server_addr.sin_family = AF_INET;
	server_addr.sin_port = htons(0);
	server_addr.sin_addr.s_addr = inet_addr(SERVERADDRESS);

	// connessione del socket al server
	if ((connect(client_socket, (struct sockaddr *)&server_addr, sizeof(server_addr))) == -1)
	{
		perror("Error in connect()");
		exit(-1);
	}

	printf("Client connected to %s\n", SERVERADDRESS);

	// invio messaggio al server
	msglen = strlen(msg)+1;
	retcode = send(client_socket, msg, msglen,0);

	printf("Sent %d (%u request) bytes on socket %d\n", retcode, (unsigned) msglen, client_socket);
}


When I try to run the Server application, I get this error "Error in server socket listen(): Operation not supported" I guess it's an error related to a wrong management of the UDP with connect().

Any suggestions?

Thanks in advance.
Previous Topic:Multiple Include Files Using Eclipse and MinGW
Next Topic:Can't run program on Eclipse!
Goto Forum:
  


Current Time: Thu Apr 25 00:10:35 GMT 2024

Powered by FUDForum. Page generated in 0.02760 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top