2011-02-07 85 views
0

我已经开始在一所学校的项目,我得到了一些问题,当我开始计划!这是我的代码(远非终点):Windows套接字问题!

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”!当我尝试compilate程序我得到这样的输出:

------构建开始:项目:Ovning1,配置:调试的Win32 ------

Ovning.c

C:\ Documents和Settings \ fredrich \桌面\ lokalanätverk\ ovning1 \ ovning1 \ ovning.c(16):警告C4013: 'printf的' 不确定;假设外部返回int

c:\ documents and settings \ fredrich \ desktop \ lokalanätverk\ ovning1 \ ovning1 \ ovning.c(22):error C2143:syntax error:missing';'之前的 'type'

C:\ Documents和Settings \ fredrich \桌面\ lokalanätverk\ ovning1 \ ovning1 \ ovning.c(23):错误C2065:消息:未声明的标识符

C:\文件和设置\ fredrich \ desktop \ lokalanätverk\ ovning1 \ ovning1 \ ovning.c(23):警告C4047:'function':'const char *'与int的间接级别不同

c:\ documents和设置\ fredrich \ desktop \ lokalanätverk\ ovning1 \ ovning1 \ ovning.c(23):warning C4024:'send':不同类型的正式和实际参数2

c:\ documents and settin GS \ fredrich \桌面\ lokalanätverk\ ovning1 \ ovning1 \ ovning.c(23):错误C2065:消息:未声明的标识符

C:\ Documents和Settings \ fredrich \桌面\ lokalanätverk\ ovning1 \ ovning1 \ ovning.c(23):警告C4047:'function':'const char *'与int不同, \ ovning.c(23):警告C4024: 'strlen的':不同类型的正式和实际参数1

==========生成:0成功,1失败,0上TO-迄今为止,0已跳过==========

任何人谁知道会发生WY这些错误?

回答

2

你有没有包括stdio.h中,printf的declration是在该文件

0

在它说0成功底部,1失败。这只是意味着一个文件无法构建。扫描右侧,会发现ovning.c中的错误和警告。首先查看每个错误并修复它。

第一个错误是printf未定义。显然你有一个错字,一个缺少的功能或缺少包括。正如Tanuj所说,你可能想要在stdio.h中使用printf,所以添加include语句。

接下来,您有两条关于未声明的标识符的消息。再次,有可能缺少包括。

2

错误C2143:语法错误:缺少';' 'type'前

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