Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
20 years ago

tcp server socket problem

Hi,

I've a problem with my tcp server socket. When I start my server socket and try to connect with a client application I the server socket do an error 88 (Socket operation on non-socket).

This problem happens only the first time that I try to make a client-server connection.

Can anyone help me?

thank you

StePa

this is my code:

int TCPIPserver(int fd)

{

struct sockaddr_in echoServAddr;

struct sockaddr_in echoClntAddr;

unsigned short echoServPort;

char firsttime=TRUE;

echoServPort =1024;

// Create socket for incoming connections

if((servSock = socket(PF_INET, SOCK_STREAM, 0)) < 0)

{

printf( "[TCPIPServer_Task] Socket() failed\n" );

exit(0);

}

// Construct Local address structure

memset(&echoServAddr, 0, sizeof(echoServAddr));

echoServAddr.sin_family = AF_INET;

echoServAddr.sin_addr.s_addr = htonl(INADDR_ANY);

echoServAddr.sin_port = htons(echoServPort);

// Bind to the local address

if(bind(servSock, (struct sockaddr *) &echoServAddr, sizeof(echoServAddr)) < 0)

{

printf( "[TCPIPServer_Task] Bind() failed\n" );

}

// Mark the socket so it will listen for incoming connections

if(listen(servSock, MAXPENDING) < 0)

{

printf( "[TCPIPServer_Task] Listen() failed\n" );

}

for(;;)

{

printf("[TCPIPServer_Task] Listening\n");

// Wait for a client to connect

if((clntSock = accept(servSock, (struct sockaddr *) &echoClntAddr, sizeof(echoClntAddr)) < 0))

{

printf( "[TCPIPServer_Task] Bind() failed\n" );

}

else

{

// clntSock is connected to a client

printf( "[TCPIPServer_Task] Connected with client %s\n", inet_ntoa(echoClntAddr.sin_addr));

TCPClient_reset_connection(&conn);

conn.clntSocket=clntSock;

conn.fd=fd;

conn.remote_ip_address = echoClntAddr.sin_addr.s_addr;

conn.remote_port = echoClntAddr.sin_port;

conn.state = CLIENT_CONNECTED;

TCPClientRx();

if (conn.state == CLIENT_CONNECTED)

{

conn.state = CLIENT_CLOSE;

close(clntSock);

printf("[TCPIPServer_Task] Socket closed.\n");

}

}

}

}
No RepliesBe the first to reply