📄 sendid.c
字号:
#include<stdio.h>
#include<stdlib.h>
#include<errno.h>
#include<string.h>
#include<netdb.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<sys/socket.h>
#include<stdlib.h>
#include<netinet/in.h>
#include <stdarg.h>
#define MAXDATASIZE 4000
#define PORT 80
int main (int argc,char *argv[])
//int main (void)
{
int sockfd,numbytes;
char *cl;
char buf[MAXDATASIZE];
char *sendbuf = "POST http://";
//char *content = "0123456789";
//char *sendbuf = "GET /index.html HTTP/1.1\r\nAccept:text/html\r\nReferer:http://" ;
struct hostent *he;//he为hostent 类型的数据结构,用来存放所获取的主机信息
struct sockaddr_in their_addr;//存放主机信息
if(argc!=2)
{
printf("too few parameter, no URL!\n");
exit(1);
}
printf ("step 1 !\n");
//获取主机信息,根据域名得到IP地址
if((he = gethostbyname(argv[1])) == NULL)
{
printf("gethostbyname error");
exit(1);
}
//建立流式套接字描述符
if((sockfd = socket(AF_INET,SOCK_STREAM,0))==-1)
{
printf("socked error");
exit(1);
printf ("error 3 !\n");
}
printf ("socket right !\n");
//给定远端主机信息
their_addr.sin_family = AF_INET;
their_addr.sin_port = htons(PORT);
their_addr.sin_addr = *((struct in_addr*)he->h_addr);
//their_addr.sin_addr.s_addr = inet_addr("211.154.211.220");
bzero(&(their_addr.sin_zero),8);
printf("you connected IP is:%s\n",inet_ntoa(their_addr.sin_addr));
//建立连接
if(connect(sockfd,(struct sockaddr*)&their_addr,sizeof(struct sockaddr)) == -1)
{
printf("connect error! \n");
exit(1);
}
printf ("connect right !\n");
//发送请求
//sprintf(sendbuf,"%s%s",sendbuf,"\r\n");
//sprintf(sendbuf, "%s%s",sendbuf,argv[1]);
//sprintf(sendbuf,"%s%s",sendbuf," HTTP/1.1\r\n");
sprintf(sendbuf,"%s%s",sendbuf,inet_ntoa(their_addr.sin_addr));
sprintf(sendbuf,"%s%s",sendbuf, "/cgi-bin/compareID.cgi HTTP/1.1\r\nAccept:text/plain\r\n");
sprintf(sendbuf,"%s%s",sendbuf,"Host:");
sprintf(sendbuf,"%s%s",sendbuf,inet_ntoa(their_addr.sin_addr));
sprintf(sendbuf,"%s%s",sendbuf,":80\r\n");
sprintf(sendbuf,"%s%s",sendbuf,"Content-type:application/x-www-form-urlencoded\r\n");
sprintf(sendbuf,"%s%s",sendbuf,"\r\n");
sprintf(sendbuf,"%s%s",sendbuf,"0123456789\r\n");
if(send(sockfd,sendbuf,strlen(sendbuf),0)==-1)
{
printf("send error \n");
exit(1);
}
printf ("your send content is:\n%s\n",sendbuf,"wait for response ....!\n");
//接受返回的信息
if((numbytes = recv(sockfd,buf,MAXDATASIZE,0))==-1)
{
printf("recv error \n");
exit(1);
}
printf ("receive num is %d !\n",numbytes);
buf[numbytes] = '\0';
printf("Received :%s\n",buf);
printf("last bit is :%c\n",buf[numbytes-1]);
printf("last bit is :%c\n",buf[numbytes-2]);
printf("last bit is :%c\n",buf[numbytes-3]);
printf("last bit is :%c\n",buf[numbytes-4]);
printf("last bit is :%c\n",buf[numbytes-5]);
printf("last bit is :%c\n",buf[numbytes-6]);
printf("last bit is :%c\n",buf[numbytes-7]);
printf("last bit is :%c\n",buf[numbytes-8]);
printf("last bit is :%c\n",buf[numbytes-9]);
printf("last bit is :%c\n",buf[numbytes-10]);
printf("last bit is :%c\n",buf[numbytes-11]);
printf("last bit is :%c\n",buf[numbytes-12]);
printf("last bit is :%c\n",buf[numbytes-13]);
printf("last bit is :%c\n",buf[numbytes-14]);
printf("last bit is :%c\n",buf[numbytes-15]);
printf("last bit is :%c\n",buf[numbytes-16]);
printf("last bit is :%c\n",buf[numbytes-17]);
printf("last bit is :%c\n",buf[numbytes-18]);
printf("last bit is :%c\n",buf[numbytes-19]);
printf("last bit is :%c\n",buf[numbytes-20]);
close(sockfd);
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -