Δημοσιεύτηκε: 19 Ιουν 2011, 22:05
από Star_Light
Κώδικας: Επιλογή όλων
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdlib.h>

struct sockadrr_in
{
short int sin_family;
unsigned short int sin_port;
struct in_addr sin_addr;
}; /*ORISMOS Tis domis gia ta function API tis C opws i bind */
typedef struct sockaddr_in sin; /*Orismos sunwnimou */

int main(void)
{
int sd;
int rc;

sd=socket(AF_INET,SOCK_STREAM,0); /*Dimiourgia socket */

if(sd==-1)
{
perror("Fail to create"); /* An o sd dn dwsei mia egkuri timi dilwse errno me tin perror() */
exit(EXIT_FAILURE);
}

sin info =
{
"AF_INET",
htons(8834),
inet_addr("192.168.1.9")

}; /* Prospa8eia arxikopoihshs */
rc=bind(sd,(struct sockaddr *)&info,sizeof(info));
if(rc==-1)
printf("error");
sleep(10);
close(sd);
}


Μου βγάζει βεβαια αρκετά errors ο κώδικας τρέχει κανονικά και δουλεύει και η sleep() για 10 δευτερόλεπτα
αλλα και παλι οταν παω να ανοιξω το Telnet στην πορτα 8834 και με την IP που εχω εδω δεν μου το τρεχει....
δεν μου εμφανίζει δηλαδη το μήνυμα Trying .... για 10 δευτερολεπτα οπως κάνει σε άλλες συνδέσεις και μετα να μου
δωσει μια connection refused μιας και δεν εχω ρυθμίσει κάποια άλλη κλήση συστήματος ακομη απο τον κωδικα μου

ειδα και αποειδα και εβαλα και μια if(rc==-1) για να δω αν τελικα η bind δουλευει καλα
και οντως μου εμφανιζει error . Μπορει κάποιος να υποθέσει πως η δομή που έχω δημιουργήσει
δεν έχει αρχικοποιηθεί σωστα τελοςπαντων. Εχω και 2ο κώδικα ο οποιος κανει καλά την αρχικοποιήση και δεν βγάζει τόσα warnings οπως ο 1ος
αλλα και παλι οταν παω να τρεξω απο το τερματικο παλι στο Telnet δεν μου εμφανίζει αυτα που πρεπει οταν κτυπαω στην αντιστοιχη IP και Port

o 2oς κωδικας :

Κώδικας: Επιλογή όλων

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

int main()
{
int socket_desc;
struct sockaddr_in address;
int rc;

/* dimiourgia socket */
socket_desc=socket(AF_INET,SOCK_STREAM,0);

/* Gia na anafer8ei to sfalma sto errno mesw tis perror*/
if (socket_desc==0)
{
perror("Create socket");
exit(EXIT_FAILURE);
}

/* arxikopoihsh domis*/
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
/* host to network for short tipo dedomenwn me tin htons */
address.sin_port = htons(7000);
/* bind stin 7000 */
bind(socket_desc,(struct sockaddr *)&address,sizeof(address));

if(rc==1)
printf("error");

sleep(10);

/* kleisimo */
close(socket_desc);
}


τα ιδια παθαινα και στην PHP δεν μπορουσε να μου δεσμευσει πορτες. Ξερει τελικα κανεις ποιο ειναι το προβλημα?????

Π.Σ Ο 2ος κωδικας δεν ειναι δικος μου http://shoe.bocks.com/net/files/ απλα του εχω βαλει τα δικα μου σχολια.