Nios® V/II Embedded Design Suite (EDS)
Support for Embedded Development Tools, Processors (SoCs and Nios® V/II processor), Embedded Development Suites (EDSs), Boot and Configuration, Operating Systems, C and C++

tcp server socket problem

Altera_Forum
Honored Contributor II
908 Views

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");  

}  

}  

}
0 Kudos
0 Replies
Reply