【问题标题】:How to use Winsock 2?如何使用 Winsock 2?
【发布时间】:2009-08-24 11:03:13
【问题描述】:

如何在 Visual Studio 2008 中使用 Windows Sockets 2。我使用的是预编译的头文件,到目前为止我尝试过的是:

  1. 在我的 StdAfx.h 文件中包含 winsock2.h
  2. 并在项目设置中输入 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.h 包含在我的 ma​​in.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>

【问题讨论】:

标签: c++ file header winsock


【解决方案1】:

好吧,您的 in_addr 问题是由于 in_addr 中没有 S_addr 字段这一事实引起的。有一个 in_addr.s_addr 重定向到 in_addr.S_un.S_addr。

【讨论】:

    【解决方案2】:

    从记忆中我认为 windows.h 包括与 winsock2.h 冲突的 winsock.h(即套接字 v1)。您可以通过定义 WIN32_LEAN_AND_MEAN 来防止这种情况:

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

    【讨论】:

      【解决方案3】:

      你需要在 windows.h 之前包含 winsock2.h

      【讨论】:

        【解决方案4】:

        尝试浏览

        http://www.sockets.com/ 示例

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-04-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-30
          • 2015-05-29
          相关资源
          最近更新 更多