首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

各位大侠,小弟最近在看网络编程,真是困难重重啊小弟我下面附了一段小小的WINSOCKET的程序,不知道什么原因,绑定和监听都没有成功,等待着各位大侠指点,不胜感

2012-04-22 
各位大侠,小弟最近在看网络编程,真是困难重重啊,我下面附了一段小小的WINSOCKET的程序,不知道什么原因,绑

各位大侠,小弟最近在看网络编程,真是困难重重啊,我下面附了一段小小的WINSOCKET的程序,不知道什么原因,绑定和监听都没有成功,等待着各位大侠指点,不胜感激
#include <WINSOCK2.H>
#include <iostream.h>

main()
{
SOCKET socknum; //socket描述符
struct sockaddr_in serveraddr; //服务器地址结构体
char* IPstring = "192.168.1.102"; //字符串形式的服务器IP地址
int IP; //32位整形IP地址
IP = inet_addr(IPstring); //字符串形式的IP地址转换成32位整形IP地址
socknum = socket(PF_INET,SOCK_STREAM,0); //创建一个套接字,并且返回描述符
memset(&serveraddr, 0, sizeof(struct sockaddr_in));

//填充服务器地址结构体的内容
serveraddr.sin_family = AF_INET; //填充协议地址
  serveraddr.sin_addr.s_addr = htonl(IP); //填充IP地址
serveraddr.sin_port = htons(3111); //填充端口号

//绑定到服务器的指定网络地址
int b; //当返回值为-1,说明绑定失败
b = bind(socknum, (struct sockaddr *)&serveraddr, sizeof(struct sockaddr_in));

//监听
int c; //当返回值为-1,说明绑定失败
c = listen(socknum, 6);

//若b=-1,c=-1,说明绑定和监听都失败
cout<<"socknum="<<socknum<<endl<<"b="<<b<<endl<<"c="<<c<<endl<<"IP="<<IP<<endl;
}

[解决办法]

C/C++ code
    WSADATA wsaData;    WORD version = MAKEWORD(2,0);    int ret = WSAStartup(version,&wsaData);    if(ret)    {        AfxMessageBox("初始化失败!");    }    m_Socket = ::socket(AF_INET,SOCK_STREAM,0);    ASSERT(m_Socket != NULL);     CString str="192.168.0.4";    m_addr.sin_family = AF_INET;    m_addr.sin_addr.S_un.S_addr = inet_addr(str);    m_addr.sin_port = htons(80);    ret = bind(m_Socket,(sockaddr*)&m_addr,sizeof(m_addr));    if(ret ==SOCKET_ERROR)        AfxMessageBox("绑定错误!");    ret = listen(m_Socket,5);    if(ret ==SOCKET_ERROR)        AfxMessageBox("监听错误!");
[解决办法]
1、需要初始化WSAStartup
2、各函数都有返回值,要学会看返回值,并判断错误出现在哪
3、网上有很多demo,先学习下
[解决办法]
探讨
C/C++ code



WSADATA wsaData;
WORD version = MAKEWORD(2,0);
int ret = WSAStartup(version,&amp;wsaData);
if(ret)
{
AfxMessageBox("初始化失败!");
}
m_Socket = ……

热点排行