Bind a socket

Vasilis Vasaitis vvas at hal.csd.auth.gr
Thu May 4 13:00:36 EEST 2000


On Thu, May 04, 2000 at 10:56:50AM +0300, Michalis Kabrianis wrote:
> Geia sas.
> Sygnwmmi alla aisthanomai ligo xazos, kai fobamai oti exw kollisei.
> Mipws mporei kapoios na mou pei ti den paei kala sto katwthi programma kai mou
> bgazei error:
> 
> bind: Socket operation on non-socket
> 
> -----cut here------
> #include <sys/types.h>
> #include <sys/socket.h>
> #include <netinet/in.h>
> #include <arpa/inet.h>
> #define PORT 9765
> 
> int sock, bound;
> struct sockaddr_in insock;
> 
> main() {
> bzero(&insock, sizeof(insock));

  Καλύτερα να χρησιμοποιείς την memset(&insock, 0, sizeof insock), που θα
σου δουλέψει ακόμα και σε PalmOS (λέμε τώρα).

> insock.sin_port=htons(PORT);
> insock.sin_family=AF_INET;
> insock.sin_addr.s_addr=INADDR_ANY;
> if (sock=socket(AF_INET, SOCK_STREAM, 0) < 0 ) {
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>         perror("socket");
>         exit(1);
> }
> if (bound=bind(sock, (struct sockaddr *) &insock, sizeof(insock)) < 0 ) {
      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>         perror("bind");
>         exit(2);
> }
> }

  Βαριέμαι να το ελέγχω, αλλά δοκίμασε να κλείσεις τις παραστάσεις που
υποδεικνύω σε παρενθέσεις (την πρώτη βασικά). Μου φαίνεται ότι το sock που
περνάς στην bind έχει την τιμή 0, η οποία είναι ο fd της προκαθορισμένης
εισόδου, που προφανώς δεν είναι socket. Επίσης (άσχετο), την μεταβλητή bound
τι την θέλεις;

> Eyxaristw ek twn proterwn.
> 
> 
> Michalis Kabrianis
> kabrianis at hellug.gr
> http://homepages.pathfinder.gr/mkab

-- 
\  /_. _o|o _ \  /_. _ _.o_|_o _ 
 \/(_|_>|||_>  \/(_|_>(_|| |_|_> 
           __                                   
     _. _ /  \|_  _.|  _ _ _|  _.  _|_|_   _ ._ 
\/\/(_|_>| (|/| |(_||o(__>(_|o(_||_||_| |o(_||  
          \__                              _|   



--
linux-greek-users mailing list -- http://lists.hellug.gr




More information about the Linux-greek-users mailing list