达人帮忙,dev-c++ socket编程问题

dairuijia 2007-04-24 04:37:26
我用的是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);
}
...全文
553 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
taodm 2007-04-24
  • 打赏
  • 举报
回复
gcc只是一个编译器,在几乎任何平台上都有可用版本。
不过,soket编程是操作系统的事情,和C、C++都没关系。
你见过C++标准里规定过socket的内容?
dairuijia 2007-04-24
  • 打赏
  • 举报
回复
晕阿 那为什么这个编译器用的gcc?这个工具有什么好处么?
taodm 2007-04-24
  • 打赏
  • 举报
回复
当然是不可以
dairuijia 2007-04-24
  • 打赏
  • 举报
回复
那编完的程序可移植到linux?
HewpKanXue 2007-04-24
  • 打赏
  • 举报
回复
windwos下的socket 要先

WSAStartup(...);
...
...
用完要 WSACleanup();
taodm 2007-04-24
  • 打赏
  • 举报
回复
在windows下跑的程序当然用的是winsock库。
dairuijia 2007-04-24
  • 打赏
  • 举报
回复
这个dev-c++是要用winsock语法来编?
taodm 2007-04-24
  • 打赏
  • 举报
回复
linux的socket编程和windows略有不同的。你还是找本windows socket的书看看吧。

65,213

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧