【问题标题】:Windows sockets problem!Windows 套接字问题!
【发布时间】:2011-02-07 19:09:29
【问题描述】:

我已经开始了一个学校项目,当我开始编程时遇到了一些问题!这是我的代码(远未完成):

WSADATA wsaData; 
WORD wVersionRequested = MAKEWORD( 2, 2 ); 
int err = WSAStartup( wVersionRequested, &wsaData );
SOCKET s = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);

struct addrinfo *info; 
int ok = getaddrinfo("www.bt.se","80",NULL,&info);

if(ok!=0) { 
    WCHAR * error = gai_strerror(ok); 
    printf("%s\n",error); 
} else while(info->ai_family != AF_INET && info->ai_next != NULL) 
    info = info->ai_next;

ok = connect(s, info->ai_addr, info->ai_addrlen);

char * message = "GET / HTTP/1.1\r\nHOST: www.bt.se\r\n\r\n"; 
ok = send(s,message,strlen(message),0);

WSACleanup();

包含文件是“winsock2.h”和“Ws2tcpip.h”!当我尝试编译程序时,我得到了这个输出:

------构建开始:项目:Ovning1,配置:Debug Win32 ------

Ovning.c

c:\documents and settings\fredrich\desktop\lokala nätverk\ovning1\ovning1\ovning.c(16): 警告 C4013: 'printf' undefined;假设 extern 返回 int

c:\documents and settings\fredrich\desktop\lokala nätverk\ovning1\ovning1\ovning.c(22):错误 C2143:语法错误:缺少 ';'在“类型”之前

c:\documents and settings\fredrich\desktop\lokala nätverk\ovning1\ovning1\ovning.c(23): error C2065: 'message' : undeclared identifier

c:\documents and settings\fredrich\desktop\lokala nätverk\ovning1\ovning1\ovning.c(23): 警告 C4047: 'function' : 'const char *' 在间接级别上与 'int' 不同

c:\documents and settings\fredrich\desktop\lokala nätverk\ovning1\ovning1\ovning.c(23): 警告 C4024: 'send' : 形参和实参 2 的不同类型

c:\documents and settings\fredrich\desktop\lokala nätverk\ovning1\ovning1\ovning.c(23): error C2065: 'message' : undeclared identifier

c:\documents and settings\fredrich\desktop\lokala nätverk\ovning1\ovning1\ovning.c(23): 警告 C4047: 'function' : 'const char *' 在间接级别上与 'int' 不同

c:\documents and settings\fredrich\desktop\lokala nätverk\ovning1\ovning1\ovning.c(23): 警告 C4024: 'strlen' : 形参和实参 1 的不同类型

========== 构建:0 成功,1 失败,0 最新,0 跳过 ==========

有谁知道为什么会出现这些错误?

【问题讨论】:

    标签: c windows socks


    【解决方案1】:

    你没有包含stdio.h吗,printf声明在那个文件里

    【讨论】:

      【解决方案2】:

      错误 C2143:语法错误:缺少 ';'在“类型”之前

      如果这是 C 而不是 C++,则不能在块的中间声明 char * message。所有变量声明都必须在块的开头。 (就在{ 之后)。

      【讨论】:

        【解决方案3】:

        应该在平台SDK中 http://msdn.microsoft.com/en-us/library/ms740673.aspx

        编辑:虽然正如其他答案所说 - 这不是问题

        【讨论】:

          【解决方案4】:

          在底部显示 0 成功,1 失败。这只是意味着一个文件未能构建。向下扫描右侧,有来自 ovning.c 的错误和警告。首先查看每个错误并修复它。

          第一个错误是 printf 未定义。显然,您有错字、缺少功能或缺少包含。正如 Tanuj 所说,您可能希望在 stdio.h 中使用 printf,因此添加 include 语句。

          接下来,您将收到两条关于未声明标识符的消息。同样,可能缺少包含。

          【讨论】:

            猜你喜欢
            • 2020-08-08
            • 2023-03-22
            • 1970-01-01
            • 2014-02-23
            • 2017-04-15
            • 2011-01-03
            • 2010-12-19
            • 2011-06-17
            相关资源
            最近更新 更多