Definitivamente debes estar omitiendo los controles de error, no olvides que cada funcion tiene diferentes valores de retorno segun si la fucion fue efectiva o no.
Por otro lado tener claro el concepto de que que parte es el cliente y que parte es el servidor, ya que en el servidor debes porner el
accept dentro de un ciclo eterno con el fin de que al recomenzar el ciclo quede pendiente de aceptar una nueva conexion.
espero que te sea de ayuda.