bind()绑定不了,是怎么回事?

s2chen02 2010-05-09 11:24:42
// sockWin32.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "winsock.h"

#pragma comment(lib, "wsock32")


int _tmain(int argc, _TCHAR* argv[])
{
SOCKET m_hSocket;
SOCKADDR_IN m_addr;
m_hSocket=socket(AF_INET, SOCK_STREAM,0);

m_addr.sin_family=AF_INET;
m_addr.sin_addr.S_un.S_addr=INADDR_ANY;
m_addr.sin_port=htons(8080);
int ret=0;
int error=0;
ret=bind(m_hSocket,(LPSOCKADDR)&m_addr, sizeof(m_addr));

if(ret==SOCKET_ERROR)
{
printf("绑定端口失败!%d",ret);
int j=0;
scanf("%d",j);
return 0;
}
ret=listen(m_hSocket, 2);

if(ret==SOCKET_ERROR)
{
printf("监听端口失败!");
return 0;
}

SOCKET s = accept(m_hSocket, NULL, NULL);

if(s==SOCKET_ERROR)
{
printf( "接受监听失败!");
return 0;
}

char buff[256];
ret=recv(s,buff,256,0);

if(ret==0||ret==SOCKET_ERROR)
{
printf("接收数据失败!");
closesocket(m_hSocket);
return 0;
}else
{
printf("接收数据成功!正在返回信息........");
char msg[19]="服务端接收数据成功";
ret=send(s,msg,19,0);
if(ret==0||ret==SOCKET_ERROR)
{
printf("服务端发送数据失败!");
closesocket(m_hSocket);
return 0;
}
}


return 0;
}

代码是这样的,请问哪里出错????
...全文
190 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
baggio1984 2010-05-09
  • 打赏
  • 举报
回复
没用WSAStartup初始化
在m_hSocket=socket(AF_INET, SOCK_STREAM,0);
前加上
WORD wVersionRequested;
WSADATA wsaData;
wVersionRequested = MAKEWORD( 2, 2 );

WSAStartup( wVersionRequested, &wsaData );

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧