Giriş
Şu satırı dahil ederiz.
İmzası şöyle
Şöyle yaparız.
Eğer işlem başarısız ise hata kodu h_errno değişkenine atanır.
Başarılı İse
Eğer işlem başarılı ise şöyle yaparız. Burada gethostbyname() metodunun döndürdüğü 4 byte IP adresi yeni bir sockarrd_in yapısını doldurmak için kullanılıyor.
Şu satırı dahil ederiz.
#include <netdb.h>
Bu metod yerine getaddrinfo metodunu tercih etmek gerekir.İmzası şöyle
struct hostent *gethostbyname(const char *name);
hosteent yapısı şöylestruct hostent {
char *h_name; /* official name of host */
char **h_aliases; /* alias list */
int h_addrtype; /* host address type */
int h_length; /* length of address */
char **h_addr_list; /* list of addresses */
}
Metod aşağıdaki gibi çalışır. İsim çözümlemesi yapar. İsim yerine string IP vermenin ne döndüreceği belirsizŞöyle yaparız.
struct hostent *hent = gethostbyname("www.yahoo.com");
Sunucu kontrol etmek için şöyle yaparız.if (hent== NULL) {
std::cerr << "Error when using gethostbyname" << std::endl;
...
}
Hata KoduEğer işlem başarısız ise hata kodu h_errno değişkenine atanır.
Başarılı İse
Eğer işlem başarılı ise şöyle yaparız. Burada gethostbyname() metodunun döndürdüğü 4 byte IP adresi yeni bir sockarrd_in yapısını doldurmak için kullanılıyor.
struct sockaddr_in servaddr;
int port = ...;
memset(&servaddr, 0, sizeof(servaddr));
servaddr.sin_family = AF_INET;
servaddr.sin_port = htons(port);
memcpy(&servaddr.sin_addr, h -> h_addr, h -> h_length);
Daha sonra bağlanma işlemi yapılabilir. Şöyle yaparız.
int rval;
rval = connect(socket, (struct sockaddr *) &servaddr, sizeof(servaddr));
Hiç yorum yok:
Yorum Gönder