达人帮忙,dev-c++ socket编程问题
我用的是dev-c++编的,按着linux下socket编程思路编的。现在调试到sockfd=socket(AF_INET,SOCK_STREAM,0)这句话就退出了,其中af_INET=not found in current context,sock_stream=not found in current context.这是为什么?请达人帮忙!
**************************************************************************
#include <stdio.h>
#include <string>
#include <winsock.h>
#include <winsock2.h>
#include <iostream>
#define MAXLINE 100000
#define SA struct sockaddr
#define SOCKET int
using namespace std;
main (int argc,char * argv[])
{
SOCKET sockfd;
char recvline[MAXLINE+1];
struct sockaddr_in servaddr;
struct hostent *hp;
hp=(struct hostent *)malloc(sizeof(struct hostent ));
cin.get();
if ((sockfd=socket(AF_INET,SOCK_STREAM,0))<0)/*判断socket是否出错*/
{
exit(1);
}
memset(&servaddr,0,sizeof(servaddr));
servaddr.sin_family=AF_INET;
servaddr.sin_port=htons(80);
hp=gethostbyname("www.baidu.com");
memcpy((char*)&servaddr.sin_addr,(char*)hp->h_addr,hp->h_length);
connect(sockfd,(SA*)&servaddr,sizeof(servaddr));
string strkey=(string)"GET /s?wd="+argv[1]+(string)"&cl=3 HTTP/1.1\n"
"Accept: */*\n"
"Referer: http://www.baidu.com/\n"
"Accept-Language: zh-cn\n"
"Accept-Encoding: gzip, deflate\n"
"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\n"
"Host: www.baidu.com\n"
"Connection: Keep-Alive\n";
const char* keyword=strkey.c_str();
send(sockfd,keyword,1000,0);/*如何确定要发送的字节数?*/
recv(sockfd,recvline,MAXLINE,0);
/*strclick将字符数组与参数连接成一串字符串*/
string strclick= (string)"GET /w.gif?query="+argv[1]+(string)"&e=959f"/*&e=?不知道怎么处理*/+(string)"&title="+argv[3]+(string)"&url=http%3A//www.rfidinfo.com.cn/Portal/Simple/Contact_4209.html&spos=4&path=http://www.baidu.com/s?ie=gb2312&bs=rfid&sr=&z=&cl=3&f=8&wd=rfid+%D0%C5%B4%EF%BB%E3%B4%CF&ct=0&t=1177206870437" /*url怎么处理?*/+
"HTTP/1.1\nAccept: */*\nReferer: http://www.baidu.com/s?wd="+argv[1]+(string)"&cl=3\nAccept-Language: zh-cn\n"
"Accept-Encoding: gzip, deflate\n"
"User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)\n"
"Host: s.baidu.com\n"
"Connection: Keep-Alive\n" ;
const char* clickword =strclick.c_str();
send(sockfd,clickword,1000,0);
closesocket(sockfd);
exit(0);
}