[英]C++ Winsock - accept()
我開始嘗試用C ++學習Winsock,但遇到了一些問題。 我從遵循MSDN(基本的客戶端服務器)上的Winsock示例開始。 http://msdn.microsoft.com/zh-CN/library/ms738545(v=vs.85).aspx
當我構建並運行代碼時,將得到輸出:
客戶端程序
已發送14個字節。
連接已關閉。
伺服器
Server.exe cmd窗口中沒有任何反應。 我不知道我在做什么錯。 我是Winsock的新手,但就Server.cpp文件中的tell而言,accept()函數從不返回。
任何幫助/指針表示贊賞。
預先感謝,湯姆。
編輯代碼可以在上面的MSDN鏈接上找到。 在頁面上向下滾動以獲取客戶端和服務器的代碼。
聽起來您的客戶端尚未連接到服務器。 它已連接到某物,但可能未連接到您的服務器。 這是我要看的一些東西:
在客戶端中硬編碼服務器IP地址。
服務器僅偵聽IPv4,但客戶端將嘗試IPv4和IPv6。 應該可以,但是我建議在此階段消除這種歧義。 在客戶端顯示AF_UNSPEC的位置將其更改為AF_INET。
檢查端口27015(也許在IPv6上)上是否還有其他監聽。 運行netstat.exe以查看正在使用的套接字。
使用普通的舊telnet連接到服務器。 如果連接,則鍵入任何內容並按Enter鍵,然后查看服務器的行為。
擺脫對客戶端中的shutdown(ConnectSocket, SD_SEND)
的調用。 應該沒關系,但是這讓我感到有點不尋常-我從來沒有只關閉套接字上的一個方向,當完全完成套接字后,我總是使用SD_BOTH。
您是在同一台計算機上運行兩個進程,還是在中間存在代理或防火牆? 例如,代理可能會接受您的客戶端連接,但無法連接到服務器。
祝好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.