Forum Discussion

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

global TCP socket issue

Hi,

I need a bit of help...

I have started from the simple socket server example and because I need the connection information in a parallel task, I have moved the

"static SSSCon conn" declaration from the SSSSimpleSocketServerTask() outside of the function declaration.

//outside, global
static SSSConn conn;
void SSSSimpleSocketServerTask()
{
  int fd_listen, max_socket;
  struct sockaddr_in addr;
  //static SSSConn conn; //moved outside
  ...
  sss_reset_connection(&conn);
  ...
  send_sss_message(&conn);
  ...
  return;
}
void myTask(SSSCon* conn){
  char *welcome = "Welcome from custom task!";
  send(conn->fd, welcome, 25, 0);
  printf("Connection status: %d", conn->fd);
}

:cry: Unfortunatelly myTask is seing an invalid connection. However the SSSSimpleSocketServerTask is working properly, as before moving the conn declaration outside.

What am I doing wrong? (I am not a true SW developer, I mainly deal with FPGA so pardon my basic mistakes...)

Thanks!

1 Reply

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Got it!

    I should not feed any arguments to myTask, simply reference to the global ressource conn.

    Confusing was the fact that, when not fed as an argument, the structure is to be accessed as

    conn.fd 

    instead of

    conn->fd 

    (not clear why?)