⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sendid.c

📁 用Socket实现的客户端send 、receive测试
💻 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 + -