簡體   English   中英

C ++ Winsock-accept()

[英]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鏈接上找到。 在頁面上向下滾動以獲取客戶端和服務器的代碼。

聽起來您的客戶端尚未連接到服務器。 它已連接到某物,但可能未連接到您的服務器。 這是我要看的一些東西:

  1. 在客戶端中硬編碼服務器IP地址。

  2. 服務器僅偵聽IPv4,但客戶端將嘗試IPv4和IPv6。 應該可以,但是我建議在此階段消除這種歧義。 在客戶端顯示AF_UNSPEC的位置將其更改為AF_INET。

  3. 檢查端口27015(也許在IPv6上)上是否還有其他監聽。 運行netstat.exe以查看正在使用的套接字。

  4. 使用普通的舊telnet連接到服務器。 如果連接,則鍵入任何內容並按Enter鍵,然后查看服務器的行為。

  5. 擺脫對客戶端中的shutdown(ConnectSocket, SD_SEND)的調用。 應該沒關系,但是這讓我感到有點不尋常-我從來沒有只關閉套接字上的一個方向,當完全完成套接字后,我總是使用SD_BOTH。

  6. 您是在同一台計算機上運行兩個進程,還是在中間存在代理或防火牆? 例如,代理可能會接受您的客戶端連接,但無法連接到服務器。

祝好運!

暫無
暫無

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

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