想试验一下新学的关于winsock编程的初级知识,结果遇到了一堆问题。问题一:我在使用CString时需要包含什么头文件?我假如建立一个win32 console app的工程是不是不能用呢?我包含stdafx.h系统提示找不到。想运行我的程序应该建立什么工程啊??我试了好多都不行,应该用mfc app?
问题二:假如我想用CSocket这各类,又需要包含什么头文件呢?还用WSAStartup这个吗?就是初始化吗?
问题三:我建立win32 console app工程时,选择了支持MFC那项,然后把我的代码加到后面,结果出现了e:\项目\程序\shiyan2\shiyan2.cpp(100) : fatal error C1010: unexpected end of file while looking for precompiled header directive
这个错误提示?
大家能帮我看看,问这个问题倾家荡产了,以下付代码,看看有错没?----------------------------------------------------------------------------------------#include "Winsock2.h"
#include "stdio.h"
// #include "stdafx.h"  这个有问题void main(){WSADATA wsaData;
WORD version = MAKEWORD(2,0);
int ret =WSAStartup(version,&wsaData);
if(ret!= 0)
TRACE("Initilize Error!\n");
SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN addrSrv;
addrSrv.sin_addr.S_un.S_addr=inet_addr("222.77.186.154");
addrSrv.sin_family=AF_INET;
addrSrv.sin_port=htons(80);
ret=0;
ret=connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));//连接我设定的一个网站
if(ret=SOCKET_ERROR)
{
TRACE("Connect Error!\n");
return;
}
CString  strSend;
char szRead[1025];//发送请求
strSend = "GET /upload/video/beili_002.avi HTTP/1.1\r\n";
strSend+= "Host: www.dingbeili.com\r\n";
strSend+= "Accept: */*\r\n";
strSend+= "Pragma: no-cache\r\n";
strSend+= "Cache-Control: no-cache\r\n";
strSend+= "Connection: close\r\n";
strSend+= "\r\n";
ret=0;
char* buf=strSend.GetBuffer(0);
ret= send(sockClient,buf,strSend.GetLength(),0);
if(ret!= strSend.GetLength())
{
TRACE("send data error!\n");
return;
}//接受反馈信息
ret=0;
ret=recv(sockClient,szRead,1025,0);
if(ret=0){
TRACE("recv data error!\n");
return;
}szRead[ret]='\0';printf("\n%s\n",szRead);}

解决方案 »

  1.   

    没人来看看吗?现在哪个stdafx还搞我我受不了
      

  2.   

    #include "stdafx.h" (预编译头)必须放在第一行。
      

  3.   

    问题一:应该用mfc app问题二:#INCLUDE <AFXSOCK.H> 初始化 AFXINITSOCK()问题三:使用mfc工程
      

  4.   

    或者在 该 cpp 文件右键的setting中,取消 预编译
      

  5.   

    你的意思是让我建一个MFC APP(exe)?  然后初始化socket是吗??
    我能不能在win32 console离实现我上面的程序呢?应该怎么做?
      

  6.   

    你上面的程序是没有问题的,只是有两个低级错误!
    if(ret=SOCKET_ERROR)  ===>>> if(ret == SOCKET_ERROR)
    if(ret=0){       =====>>>>  if(ret == 0){另外程序里使用了MFC类,
    1。在头部增加#include "AFXWIN.H"(第一行),
    2。#include "stdafx.h" 去掉也罢
    3。Project->settings->Use MFC in a Shared DLL
    4。编译运行成功(已测试通过能收到反馈信息)
      

  7.   

    5.忘了还需要 #pragma comment(lib,"ws2_32.lib")