慕容708150
2023-03-18 18:14:37
void CServerDlg::OnBnClickedButton1(){/////////////////////////////////////////////////int m_iServerSocket = socket(AF_INET, SOCK_STREAM, 0);SOCKADDR_IN m_rcvaddr;memset((void *)&m_rcvaddr, 0, sizeof(SOCKADDR_IN));m_rcvaddr.sin_family = AF_INET;m_rcvaddr.sin_addr.s_addr = inet_addr("0.0.0.0");m_rcvaddr.sin_port = htons(1000);//綁定bind(m_iServerSocket, (struct sockaddr *)&m_rcvaddr, sizeof(SOCKADDR_IN));//監(jiān)聽listen(m_iServerSocket, 5);//客戶端SOCKET cmdsrv = (int)accept(m_iServerSocket,NULL,NULL);if(cmdsrv == INVALID_SOCKET){int err=GetLastError();return;}char buf[1024];//接收數(shù)據(jù)int rxn = recv(cmdsrv, buf, 1024,0);buf[rxn] = '\0';AfxMessageBox(buf);sprintf(buf, "你也好,再見");send(cmdsrv, buf, strlen(buf), 0);closesocket(m_iServerSocket);}此段代碼其他機器都好使,但在我電腦上不行,socket返回值總是-1,環(huán)境都是用的VS2010,初學(xué)者,遇到這種莫名其妙的問題,求指教~
2 回答

富國滬深
TA貢獻1790條經(jīng)驗 獲得超9個贊
如果確認(rèn)同一代碼,同一工程,在其他機器良好,在本機
int m_iServerSocket = socket(AF_INET, SOCK_STREAM, 0);
m_iServerSocket ==-1.
getlasterror()對照看下錯誤。
看其他網(wǎng)絡(luò)軟件是否正常運行。
據(jù)經(jīng)驗,可能是本機安裝的保護,監(jiān)聽類似軟件造成問題。也可能是ipv4

尚方寶劍之說
TA貢獻1788條經(jīng)驗 獲得超4個贊
使用WSAGetLastError()獲取具體錯誤代碼,找到對應(yīng)錯誤描述信息,再解決問題。
在socket函數(shù)之前,加上:
#include <stdio.h>
#include "winsock2.h"
// Initialize Winsock.
WSADATA wsaData;
int iResult = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (iResult != NO_ERROR)
printf("Error at WSAStartup()\n");
試試
添加回答
舉報
0/150
提交
取消