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));//监听listen(m_iServerSocket, 5);//客户端SOCKET cmdsrv = (int)accept(m_iServerSocket,NULL,NULL);if(cmdsrv == INVALID_SOCKET){int err=GetLastError();return;}char buf[1024];//接收数据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,环境都是用的VS2010,初学者,遇到这种莫名其妙的问题,求指教~
2 回答
富国沪深
TA贡献1790条经验 获得超9个赞
如果确认同一代码,同一工程,在其他机器良好,在本机
int m_iServerSocket = socket(AF_INET, SOCK_STREAM, 0);
m_iServerSocket ==-1.
getlasterror()对照看下错误。
看其他网络软件是否正常运行。
据经验,可能是本机安装的保护,监听类似软件造成问题。也可能是ipv4
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
使用WSAGetLastError()获取具体错误代码,找到对应错误描述信息,再解决问题。
在socket函数之前,加上:
#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
提交
取消