簡體   English   中英

Windows套接字問題!

[英]Windows sockets problem!

我已經開始了一個學校項目,開始編程時遇到了一些問題! 這是我的代碼(遠遠沒有完成):

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,配置:Win32調試------

Ovning.c

c:\\ documents and settings \\ fredrich \\ desktop \\ lokalanätverk\\ ovning1 \\ ovning1 \\ ovning.c(16):警告C4013:'printf'未定義; 假設extern返回int

c:\\ documents and settings \\ fredrich \\ desktop \\ lokalanätverk\\ ovning1 \\ ovning1 \\ ovning.c(22):錯誤C2143:語法錯誤:缺少';' 在“類型”之前

c:\\ documents and settings \\ fredrich \\ desktop \\ lokalanätverk\\ ovning1 \\ ovning1 \\ ovning.c(23):錯誤C2065:'message':未聲明的標識符

c:\\ documents and settings \\ fredrich \\ desktop \\ lokalanätverk\\ ovning1 \\ ovning1 \\ ovning.c(23):警告C4047:'function':'const char *'的間接引用級別與'int'不同

c:\\ documents and settings \\ fredrich \\ desktop \\ lokalanätverk\\ ovning1 \\ ovning1 \\ ovning.c(23):警告C4024:“發送”:正式和實際參數2的不同類型

c:\\ documents and settings \\ fredrich \\ desktop \\ lokalanätverk\\ ovning1 \\ ovning1 \\ ovning.c(23):錯誤C2065:'message':未聲明的標識符

c:\\ documents and settings \\ fredrich \\ desktop \\ lokalanätverk\\ ovning1 \\ ovning1 \\ ovning.c(23):警告C4047:'function':'const char *'的間接引用級別與'int'不同

c:\\ documents and settings \\ fredrich \\ desktop \\ lokalanätverk\\ ovning1 \\ ovning1 \\ ovning.c(23):警告C4024:'strlen':正式和實際參數1的不同類型

==========構建:0成功,1失敗,0最新,跳過0 ==========

任何人都知道發生這些錯誤嗎?

您是否未包含stdio.h,該文件中是否包含printf斜度

錯誤C2143:語法錯誤:缺少';' 在“類型”之前

如果這是C而不是C ++,則不能在塊中間聲明char * message 所有變量聲明必須在塊的開頭。 (在{ )。

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

編輯:雖然如其他答案所說-這不是問題

底部顯示0成功,1失敗。 這僅表示一個文件無法構建。 向下掃描右側,ovning.c提供了錯誤和警告。 首先查看每個錯誤,然后進行修復。

第一個錯誤是printf未定義。 顯然,您有錯別字,缺少功能或缺少包含。 正如Tanuj所說,您可能要在stdio.h中使用printf,因此添加include語句。

接下來,您將收到兩條有關未聲明標識符的消息。 再次,可能缺少包含。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM