2011-02-07 114 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。所有變量聲明都必須在塊的開始處。 (在{之後)。