(C) İndex İsteyen C Kodu (Socket Programlama)
-
yazdıgınız adresten index sayfasını isteyen C socket programlama örneğidir...
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>int socket_recv(SOCKET ss,char *buf);
int socket_send(SOCKET ss,char *buf);
SOCKET connect_socket(char *adres,unsigned int port,int *en);
int main(void)
{
WSADATA wsadata;
SOCKET s1;
int en;
char buf[450];
char adres[50];
char cmd[100];
unsigned int port = 80;
WSAStartup(MAKEWORD(2,0),&wsadata);
//------------------------------------------------- baglantı saglamakprintf("adres :");
gets(adres);
strcpy(cmd,"GET http://");
strcat(cmd,adres);
strcat(cmd," HTTP/1.0\n\n");
printf("%s",cmd);s1 = connect_socket(adres,port,&en);
if(en){
printf("baglantI basarILI\n");
socket_send(s1,cmd);
socket_recv(s1,buf);
puts(buf);
}
else {
printf("baglantI basarIsIz\n");
}WSACleanup();
closesocket(s1);
system("pause");
return 0;
}
int socket_recv(SOCKET ss,char *buf)
{
memset(buf,'\0',500);
if((recv(ss,buf,500,0)) ==-1){
//puts("recv error \n");
return 0;
}
else{
return 1;
}
}
int socket_send(SOCKET ss,char *buf)
{
if((send(ss,buf,strlen(buf),0)) == -1){
//puts("send error!\n");
return 0;
}
else{
return 1;
}
}
SOCKET connect_socket(char *adres,unsigned int port,int *en)
{struct hostent *he;
struct sockaddr_in their_addr;
SOCKET sck;
if((he = gethostbyname(adres)) == NULL){
//puts("hostname error");
}their_addr.sin_family = AF_INET;
their_addr.sin_port = htons(port);
their_addr.sin_addr = *((struct in_addr *)he->h_addr);
memset(&(their_addr.sin_zero),'\0',8);if((sck = socket(AF_INET,SOCK_STREAM,0)) == -1){
// puts("socket error");
}if((connect(sck,(struct sockaddr *)&their_addr,sizeof(struct sockaddr))) == -1){
*en = 0; //baglantı gerçekleştirilemedi
}
else{
*en = 1; //basarılı;
}return sck;
}
