Skip to content

Instantly share code, notes, and snippets.

@lehaiquantb
Created March 16, 2020 20:21
Show Gist options
  • Save lehaiquantb/74e9f97f1f9afd5f90bb3f3c70aa549b to your computer and use it in GitHub Desktop.
Save lehaiquantb/74e9f97f1f9afd5f90bb3f3c70aa549b to your computer and use it in GitHub Desktop.
Network Programming LeHaiQuan20173316
#include <stdio.h>
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include <winsock2.h>
#include <ws2tcpip.h>
#pragma comment(lib, "ws2_32")
//Hàm kiểm tra tên miền
int checkIsDomain(char* domain,int last) {
int i = 0;
//Tên miền ko thể chứa kí tự - ở đầu hoặc cuối
if (domain[0] == '-' || domain[last-1] == '-') return 0;
//Tên miền chỉ chứa các ký tự chữ cái, chữ số, dấu gạch ngang và dấu chấm
for (i = 0; i < last; i++) {
if (domain[i] == '-' || domain[i] == '.' || (domain[i] >= 'a' && domain[i] <= 'z') || (domain[i] >= '0' && domain[i] <= '9')) continue;
else return 0;
}
return 1;
}
int main()
{
char domain[256];
printf("Nhap ten mien\n");
scanf_s("%s",domain,sizeof(domain));
int last;
for (last = 0; last < 256; last++)
{
if (domain[last] == '\0') break;
}
if (checkIsDomain(domain, last) == 1) {
// Khoi tao thu vien Winsock
WSADATA wsa;
WSAStartup(MAKEWORD(2, 2), &wsa);
//Khai báo con trỏ info trỏ tới cấu trúc địa chỉ tên miền
addrinfo* info;
//Khai báo biến cấu trúc addr là cấu trúc địa chỉ server
SOCKADDR_IN addr;
//Thực hiện hàm phân giải tên miền
int ret = getaddrinfo(domain, "http", NULL, &info);
//Thành công
if (ret == 0)
{
//Thực hiện lưu cấu trúc địa chỉ tên miền lấy đc cho ctruc địa chỉ server
memcpy(&addr, info->ai_addr, info->ai_addrlen);
printf("Phan giai thanh cong\n");
//Hàm inet_ntoa chuyển dạng số nguyên sang xâu địa chỉ
printf("Dia chi IP: %s", inet_ntoa(addr.sin_addr));
}
//Thất bại
else
{
printf("Khong the phan giai ten mien");
}
}
else printf("Ten mien khong dung");
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment