代码是这样写的。运行后,再运行一个客户端,客户端可以connect成功,但是这个程序返回的socket总是INVALID_SOCKET(没有打印connect OK! )
请帮忙看一下,什么地方有问题了? 谢谢。#include <iostream.h>
#include <winsock2.h>void main()
{
WSADATA wsaData;
if ( 0 != WSAStartup(MAKEWORD(2,2), &wsaData))
{
cout<<"err1"<<endl;
return;
} SOCKET g_TelnetSocket;
g_TelnetSocket = socket( AF_INET, SOCK_STREAM, IPPROTO_IP ); if ( SOCKET_ERROR == g_TelnetSocket )
{
cout<<"err2"<<endl;
return ;
} sockaddr_in strAddr;
strAddr.sin_family = AF_INET;
strAddr.sin_port = htons( 23 );
strAddr.sin_addr.s_addr = inet_addr( "127.0.0.1" ); if ( SOCKET_ERROR == bind( g_TelnetSocket, (SOCKADDR*)&strAddr, sizeof( strAddr )))
{
cout<<"err3"<<endl;
return ;
} if ( SOCKET_ERROR == listen( g_TelnetSocket, 5 ))
{
cout<<"err4"<<endl;
return ;
} sockaddr g_ClientAddr;
INT nAddrLen;
while(1)
{
if ( INVALID_SOCKET != accept( g_TelnetSocket, &g_ClientAddr, &nAddrLen ) )
{
cout<<"connect OK !"<<endl;
break;
}
}
return;
}
请帮忙看一下,什么地方有问题了? 谢谢。#include <iostream.h>
#include <winsock2.h>void main()
{
WSADATA wsaData;
if ( 0 != WSAStartup(MAKEWORD(2,2), &wsaData))
{
cout<<"err1"<<endl;
return;
} SOCKET g_TelnetSocket;
g_TelnetSocket = socket( AF_INET, SOCK_STREAM, IPPROTO_IP ); if ( SOCKET_ERROR == g_TelnetSocket )
{
cout<<"err2"<<endl;
return ;
} sockaddr_in strAddr;
strAddr.sin_family = AF_INET;
strAddr.sin_port = htons( 23 );
strAddr.sin_addr.s_addr = inet_addr( "127.0.0.1" ); if ( SOCKET_ERROR == bind( g_TelnetSocket, (SOCKADDR*)&strAddr, sizeof( strAddr )))
{
cout<<"err3"<<endl;
return ;
} if ( SOCKET_ERROR == listen( g_TelnetSocket, 5 ))
{
cout<<"err4"<<endl;
return ;
} sockaddr g_ClientAddr;
INT nAddrLen;
while(1)
{
if ( INVALID_SOCKET != accept( g_TelnetSocket, &g_ClientAddr, &nAddrLen ) )
{
cout<<"connect OK !"<<endl;
break;
}
}
return;
}
解决方案 »
- VC6变量的成员列表不自动列出
- 调用ntdll中的RtlDecompressBuffer,结果很诡异,求教
- 刚开发了一个象棋游戏,散点分
- C语言缓冲溢出代码编译正常,执行出错,请各位大侠指导
- 关于在CArray<CString, CString>中成员删除字符
- 如何把一个中英文混合的字符串转为16进制的字符串?
- ASCII码的中文字符串数组传过来我用FORMAT('%S')一下确是乱码,谁能教教我..
- 内存泄露是什么意思?它会影响程序的正确运行吗?
- 用过cj60lib的请进
- 两个文件如何连接
- Visual2005下的CString 与char*的转换
- 我弱了,来小哥给说下为啥改为SND_RESOURCE便不出声了?
替换成INADDR_ANY试看下
定义这么写:INT nAddrLen = sizeof( sockaddr );就可以了。