#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#define min(a,b) (a)<(b)?(a):(b)
int readline_sock(int sockfd,char* RecvData,int RecvLen)
{
char tmp;
int len = 0;
int ret;
while(len < RecvLen && (ret = recv(sockfd,&tmp,1,0)) == 1)
{
if(tmp == '\r')
break;
memcpy(RecvData + len,&tmp,1);
len += 1;
}
if(ret != 1)
{
printf("readline err %d %s",errno,strerror(errno));
return -1;
}
if(len == RecvLen)
return len;
if(tmp == '\r')
{
ret = recv(sockfd,&tmp,1,0);
if(ret != 1)
{
printf("readline err %d %s",errno,strerror(errno));
return -1;
}
else
{
return len;
}
}
}
int readbytes_sock(int sockfd,char* RecvData,int RecvLen)
{
int len = 0,l = 0;
while((len = recv(sockfd,RecvData + l,RecvLen - l,0)) > 0)
{
l += len;
}
if(len < 0)
return len;
return l;
}
int connect_alipay_new(char *host,int port,char *sendData,int sendData_len,char *recvData,int recvData_maxlen)
{
int sockfd;
struct hostent *phost = NULL;
struct sockaddr_in sin;
char tmp[0x8000 + 1];
int tmp_len = 0;
char name[100],value[100],*index1,*index2;
int fd = 0;
int recv_len = 0 ,len,len2;
printf("gethostbyname start %s\n",__TIME__);
phost = gethostbyname(host);
if(phost ==NULL) return;
sockfd = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
printf("gethostbyname end ok %s\n",__TIME__);
sin.sin_family = AF_INET;
sin.sin_port = htons(port);
sin.sin_addr = *(struct in_addr*)phost-&
Transfer-Encoding chunked C写个解析
最新推荐文章于 2024-06-08 08:00:00 发布