#include "winsock2.h"
#pragma comment(lib,"ws2_32.lib")
#define MAXNUM 20
class CServerDlg : public CDialog
{
public:
CIPAddressCtrl m_IP;
int m_port;
public:
SOCKET m_server,m_client;
SOCKET m_Clients[MAXNUM]; // 客戶端套接字
int m_CurClient; // 當前連接的客戶數量
virtual void HandleData();
virtual BOOL PreTranslateMessage(MSG *pMsg);
public:
CString m_serverIP;
};
↑上面的是ServerDlg.h里的我定義的內容
↓下面的是ServerDlg.cpp里的OnOK函式(用于回應監聽按鈕)
void CServerDlg::OnOK()
{
// TODO: Add extra validation here
// 服務器端地址
sockaddr_in serveraddr;
serveraddr.sin_family = AF_INET; //內部網路協議TCP/UDP等
m_IP.GetWindowText(m_serverIP);
// 設定本機地址
serveraddr.sin_addr.S_un.S_addr = inet_addr(m_serverIP);
UpdateData(TRUE);
// 設定埠號
serveraddr.sin_port = htons(m_port);
// 系結地址
if(bind(m_server,(sockaddr*)&serveraddr,sizeof(serveraddr)))
{
MessageBox("系結地址失敗");
return;
}
// 開始監聽
listen(m_server,50);
//CDialog::OnOK();
}
問題是無論我輸入什么ip地址,都顯示系結地址失敗。。這是什么原因?
↓下面是我的對話框

上下分別是CIPAddressCtrl m_IP和int m_port
uj5u.com熱心網友回復:
m_IP.GetWindowText(m_serverIP);你確定這句執行后,m_serverIP的值就是你輸入的IP地址嗎?
uj5u.com熱心網友回復:
這陳述句不是這個意思么……
uj5u.com熱心網友回復:
什么意思不重要,重要的是這個值對不對?uj5u.com熱心網友回復:
bind失敗,看看WSAGetLastError()的值是什么?uj5u.com熱心網友回復:
請問這個問題你有沒有解決?我也遇到了,。uj5u.com熱心網友回復:
值是對的 MessageBox(m_IP)和埠都是可以正常獲取到,WSAGetLastError()這個值獲取不到 沒有回傳任何值uj5u.com熱心網友回復:
m_server 初始化了嗎?WSAStartUp 呼叫了嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/64017.html
標籤:網絡編程
