socket http通信
来源:互联网 发布:咸阳软件培训学校 编辑:程序博客网 时间:2024/06/08 02:10
1.主要函数
--------struct hostent*gethostbyname(char *host); //用于主机解析,返回 struct hostent*指针
--------int socket(); //生成一个socket对象
--------int connect(); //连接server端
---------read()/write; //读写socket
2.http协议主要格式
strcat(message,"GET / HTTP/1.1\r\n");
strcat(message,"Accept: text/html\r\n");
strcat(message,"Host: www.baidu.com\r\n");
strcat(message,"User-Agent: Mozilla/5.0(compatible)\r\n");
strcat(message,"Connection: Keep-Alive\r\n");
strcat(message,"\r\n");
3.代码实现
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <string.h>
#include <unistd.h>
#include <pthread.h>
void * msg_handler(void *serv_fd)
{
puts("aa*****");
char buf[100]={0};
while(read((int)serv_fd,buf,sizeof(buf)))
{
}
puts(buf);
return (void *)0;
}
int main()
{
int serv_fd;
char *hostname = "www.baidu.com";
char message[150]={0};
if((serv_fd=socket(AF_INET,SOCK_STREAM,0)) < 0)
{
perror("socket");
goto err_socket;
}
struct hostent *p = NULL;
p = gethostbyname(hostname);
if( p == NULL )
{
perror("error");
puts("error");
fflush(stdout);
}
puts("here");
if(*(p->h_addr_list) != NULL)
{
puts("*");
puts(inet_ntoa(*((struct in_addr *)(*(p->h_addr_list)))));
p->h_addr_list++;
}
struct sockaddr_in attr ={
.sin_family = AF_INET,
.sin_port = htons(80),
/* .sin_addr = {
.s_addr = *(p->h_addr),
*/
.sin_addr = *((struct in_addr*)(p->h_addr)),
};
strcat(message,"GET / HTTP/1.1\r\n");
strcat(message,"Accept: text/html\r\n");
strcat(message,"Host: www.baidu.com\r\n");
strcat(message,"User-Agent: Mozilla/5.0(compatible)\r\n");
strcat(message,"Connection: Keep-Alive\r\n");
strcat(message,"\r\n");
puts(message);
if(connect(serv_fd,(struct sockaddr*)&attr,sizeof(attr)) == -1)
{
perror("connect");
goto err_socket;
}
int i=0;
//while(1)
for(i=0;i<2;i++)
{
if((write(serv_fd,message,strlen(message))) < 0)
{
perror("write");
goto err_socket;
}
char buf[10000]={0};
int len =0;
if((len =read(serv_fd,buf,sizeof(buf))) < 0)
{
perror("read");
goto err_socket;
}
/ if(read())
printf("%d\n",len);
puts(buf);
puts(buf+400);
}
*
int ip = inet_addr("192.168.0.25");
attr.sin_addr.s_addr = *(p->h_addr);
puts(p->h_name);
puts((inet_ntoa(attr.sin_addr)));
/
/ if()
return 0;
err_socket:
return -1;
}
- Socket和Http通信
- Socket和Http通信
- socket http通信
- Socket和Http通信
- Socket和Http通信
- socket通信之http-server
- socket通信之http-server
- socket通信之http-server
- Http通信与Socket通信比较:谁更猴塞雷?
- 【socket】socket介绍-socket与http服务通信
- 移动设备的网络通信 http /socket
- Android编程学习:http + socket 通信例程
- 移动设备的网络通信 http /socket
- ios---socket、http以及网络通信
- 网络通信机制:Socket、TCP/IP、HTTP
- ios---socket、http以及网络通信
- http和socket通信的区别
- http和socket通信的区别
- 杭电ACM。。。sort
- Service api
- 关于firefox安全限制限制您进行剪贴板操作的解决方法
- C语言调用Lua脚本
- 4_2
- socket http通信
- JAVA正则表达式 Pattern和Matcher详解
- 在STK里使用飞机任务模块
- freeswitch
- 杂记
- POCO C++库学习和分析 -- 异常、错误处理、调试
- C语言和c++预处理命令之条件编译(#ifdef,#else,#endif,#if等)
- linux下tar.gz、tar、bz2、zip等解压缩、压缩命令
- sendUrgentData(0xff) socket.getInputStream()报错