[英]Winsock C TCP Socket
我之前在Python中使用過TCP套接字。 它在C中看起來非常相似但我無法獲得任何工作。 socket(AF_INET, SOCK_STREAM, 0);
返回-1,這當然表示錯誤。 我怎么會這么快走錯路? 如果你可以幫我解決這個問題,那就太好了,但如果你能給我一些簡單的,簡單的骨頭源代碼,那將會非常有幫助。 它甚至不需要做任何事情,也不需要處理錯誤。 我只需要看看如何正確創建服務器套接字,綁定它,監聽它,接受客戶端以及如何創建和連接客戶端套接字。 我可以自己弄清楚所有的花里胡哨。
謝謝!
在進行任何其他winsock調用之前,您是否調用了WSAStartup
?
在使用套接字之前,需要使用WSAStartup
函數初始化WinSock。 Python在Windows上實現套接字可能會自動調用它,所以你不必擔心它,但是當直接使用WinSock時,在任何其他WinSock調用之前調用WSAStartup
很重要,當你的程序完成套接字時,你需要調用WSACleanup
。
WSAData data;
if (WSAStartup(MAKEWORD(2, 2), &data) != 0)
{
// unable to initialise WinSock, time to quit
}
// WinSock has been successfully initialised, time to make sockets!
int s = socket(...);
// After all WinSock stuff is done, balance out your WSAStartup with a cleanup:
WSACleanup();
可能只是該進程無權創建套接字( errno == EACCES
)。
也許你的python解釋器獲得了不同的安全上下文,檢查一下。
無論如何,比抱歉更安全,所以放在那里:
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == -1) {
perror("myapp");
exit(1);
}
IDK,如果Winsock實際設置errno
,但它應該...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.