- 论坛徽章:
- 0
|
在客户机上不能得到远程服务器的返回信息,求大虾帮忙!!!谢 谢 谢
以下是客户机代码:
………………
#define PORTNUM 80
int errno;
int main(void)
{
int socketId;
struct sockaddr_in serverAdd;
struct hostent *host;
char * url = "www.sohu.com";
char * msg = "GET /index.html HTTP/1.0 Accept: */* connection: keep-live";
char get[10000] ;
int i=0;
socketId = socket(AF_INET,SOCK_STREAM,0);
printf("socketId=%d",socketId);
if (socketId != -1) {
printf("\nSocket OK\n");
} else {
printf("Socket Fails\n");
}
bzero(&serverAdd,sizeof(serverAdd));
host = gethostbyname(url);
bcopy(host->h_addr,(struct sockaddr *)&serverAdd.sin_addr,host->h_length);
serverAdd.sin_port=htons(PORTNUM);
serverAdd.sin_family=AF_INET;
serverAdd.sin_addr.s_addr=htonl(INADDR_ANY);
serverAdd.sin_addr.s_addr=((struct in_addr *)(host->h_addr))->s_addr;
if( (connect(socketId,(struct sockaddr *)&serverAdd,sizeof(serverAdd))) == 0){
fprintf(stderr,"connect error:%s",strerror(errno));
printf("\nConnect ok\n");
}
int getLen;
int sendLen;
printf("%s\n",msg);
printf("%d\n",strlen(msg));
printf("socketId=%d\n",socketId);
sendLen = send(socketId,msg,strlen(msg),0);
printf("Send %d B ok...\n",sendLen);
printf("%d\n",sizeof(get));
getLen = recv(socketId,get,sizeof(get),0);
printf("Get %d B\n",getLen);
printf("%s\n",get);
close(socketId);
}
运行结果:
socketId=3
Socket OK
connect error:Success
Connect ok
GET /index.html HTTP/1.0 Accept: */* connection: keep-live
58
socketId=3
Send 58 B ok...
10000
Get 0 B
网络的连接也正常(如可以在浏览器中访问 www.sohu.com),而且如果两机在同网中,就可以收到服务器端信息;
但是在我们的同网中不能访问同台机器的WEB服务器,但是浏览器可以访问。
求教 急!!!
[ 本帖最后由 jovistar 于 2007-9-6 23:01 编辑 ] |
|