2009-08-24 82 views
0

如何使用Windows套接字2 Visual Studio 2008中我使用的是预编译的头,到目前为止我曾尝试是:如何使用Winsock 2?

  1. 的StdAfx.h文件
  2. 包括 winsock2.h
  3. 并进入WS2_32.LIB在项目设置

一个额外的依赖我得到这些错误

------ Build started: Project: TestIVR, Configuration: Debug Win32 ------ 
Compiling... 
main.cpp 
c:\documents and settings\hussain\my documents\visual studio 2008\projects\testivr\testivr\main.cpp(30) : error C2065: 'WSAEVENT' : undeclared identifier 
c:\documents and settings\hussain\my documents\visual studio 2008\projects\testivr\testivr\main.cpp(30) : error C2146: syntax error : missing ';' before identifier 'socketEvent' 
c:\documents and settings\hussain\my documents\visual studio 2008\projects\testivr\testivr\main.cpp(30) : error C2065: 'socketEvent' : undeclared identifier 
c:\documents and settings\hussain\my documents\visual studio 2008\projects\testivr\testivr\main.cpp(35) : error C2039: 'S_addr' : is not a member of 'in_addr' 
     c:\program files\microsoft sdks\windows\v6.0a\include\inaddr.h(22) : see declaration of 'in_addr' 
c:\documents and settings\hussain\my documents\visual studio 2008\projects\testivr\testivr\main.cpp(40) : error C2065: 'socketEvent' : undeclared identifier 
c:\documents and settings\hussain\my documents\visual studio 2008\projects\testivr\testivr\main.cpp(40) : error C3861: 'WSAEventSelect': identifier not found 
Build log was saved at "file://c:\Documents and Settings\Hussain\My Documents\Visual Studio 2008\Projects\TestIVR\TestIVR\Debug\BuildLog.htm" 
TestIVR - 6 error(s), 0 warning(s) 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

顺便说一句,如果我包括winsock2.hmain.cpp中(我的main()函数所在的)然后我得到不同的错误

------ Build started: Project: TestIVR, Configuration: Debug Win32 ------ 
Compiling... 
main.cpp 
c:\documents and settings\hussain\my documents\visual studio 2008\projects\testivr\testivr\main.cpp(36) : error C2039: 'S_addr' : is not a member of 'in_addr' 
     c:\program files\microsoft sdks\windows\v6.0a\include\inaddr.h(22) : see declaration of 'in_addr' 
Build log was saved at "file://c:\Documents and Settings\Hussain\My Documents\Visual Studio 2008\Projects\TestIVR\TestIVR\Debug\BuildLog.htm" 
TestIVR - 1 error(s), 0 warning(s) 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

以下是内容我的StdAfx.h头文件

#pragma once 

#include <stdio.h> 
#include <tchar.h> 
#include <windows.h> 
#include <winsock2.h> 
+0

想通[MSDN网站(http://msdn.microsoft.com/en-us/library /ms738571.aspx)可能有助于未来的参考。 – brice 2011-06-29 09:37:46

回答

3

你需要WINDOWS.H

之前包括winsock2.h
+1

为什么这样呢? – akif 2009-08-25 02:43:38

5

你的in_addr问题是由于in_addr中没有S_addr字段造成的。有一个in_addr.s_addr重新指向in_addr.S_un.S_addr。

+0

谢谢先生,那很好 – akif 2009-08-25 02:46:01

4

从内存我认为windows.h包括winsock.h(即sockets v1),它与winsock2.h冲突。您可以通过定义WIN32_LEAN_AND_MEAN防止这种情况:

#include <stdio.h> 
#include <tchar.h> 
#define WIN32_LEAN_AND_MEAN 
#include <windows.h> 
#include <winsock2.h>