荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: jjk (UNIX+C+XML+?? 傻了?), 信区: Linux
标  题: Re: 请问用c怎么打开远程url地址?[转载]
发信站: 荔园晨风BBS站 (Mon Apr 22 19:53:21 2002), 转信

【 以下文字转载自 jjk 的信箱 】
【 原文由 jjk.bbs@apue.dhs.org 所发表 】
发信人: carry (爱流汗水), 信区: APUE
标  题: Re: 请问用c怎么打开远程url地址?
发信站: UNIX编程 (2002年04月12日16:03:12 星期五), 站内信件

呵呵,

前几天正好试了一个例子
不是我原创,
不过我不记得是从哪Copy的了
很简单,也很好懂

#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

#define BUF_LEN 1024
#define SERVER "202.102.111.222 "

int main()
{
 struct sockaddr_in sin;
 char buffer[BUF_LEN+1];
 int fd;
 char *p;

 int state,i,len=sizeof(sin);

 sin.sin_family=AF_INET;
 sin.sin_port=htons(80);
 sin.sin_addr.s_addr=inet_addr(SERVER);

 strcpy(buffer,"GET / http/1.1\r\n\r\n");

 fd=socket(AF_INET,SOCK_STREAM,0);
 if(fd<=0) return -1;
 state=connect(fd,(struct sockaddr*)&sin,len);
 if(state) {close(fd); return -1;}
 len=send(fd,buffer,strlen(buffer),0);
 if(len<=0) {close(fd); return -1;}
 len=0;
 while( (i=recv(fd,&buffer[len],BUF_LEN-len,0))>0 && len<BUF_LEN ) len+=i;
 buffer[len]=0;
 close(fd);

 p=strstr(buffer,"\n\n");
 if(!p) p=strstr(buffer,"\r\n\r\n");
 if(!p) return -1;
 printf("%s\n",buffer);
 return 0;

}

【 在 soundss (sound) 的大作中提到: 】
: 例如想打开某个网站的网页,
: 请问要怎么做?
: c函数里的fopen函数可以打开远程url吗?
--
※ 来源:·UNIX编程 apue.dhs.org·[FROM: 166.111.168.8] --
※ 转寄:·UNIX编程 apue.dhs.org·[FROM: 210.39.3.50]
--
※ 转载:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.0.146]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店