SOCKET sEcho = (SOCKET) -1;
INT32 nOne = 1;
INT32 nAddrLen = sizeof(struct sockaddr_in);
UINT16 uslocalPort = 0;
char chBuf[256];
char *buf=new char[256];
INT32 nStart = GetTickCount(); // SOCKET sock_logr = sServerLog;
///////////////////////////////////////////////////////////// pAddrLocal->sin_family = AF_INET;
pAddrLocal->sin_addr.s_addr = INADDR_ANY;
pAddrLocal->sin_port = 0; ////////////////////////////////////////////////////////////////////////////////////////////////
sEcho = socket(PF_INET, SOCK_STREAM, 0);
if(setsockopt(sEcho,SOL_SOCKET,SO_REUSEADDR,(char *)&nOne,sizeof(nOne))==-1)
{
DWORD error_result=GetLastError(); int aa=-1;
}
if(bind(sEcho,(struct sockaddr *)pAddrLocal, sizeof(struct sockaddr_in))==-1)
{
DWORD error_result=GetLastError(); int aa=-1;
}
if(getsockname(sEcho,(struct sockaddr *)pAddrLocal, &nAddrLen)==-1)
{
DWORD error_result=GetLastError(); int aa=-1;
}
////////////////////////////////////////////////////////连接服务器并接收到IP和端口函数
无
//////////////////////////////////////////////////////////
close(sEcho); sEcho = socket(PF_INET, SOCK_STREAM, 0);
if(setsockopt(sEcho,SOL_SOCKET,SO_REUSEADDR,(char *)&nOne,sizeof(nOne))==-1)
{
DWORD error_result=GetLastError();
int aa=-1; }
///////////////////////////////////我这个BIND 为什么会失败的
if(bind(sEcho,(struct sockaddr *)pAddrLocal, sizeof(struct sockaddr_in))==-1);
{
DWORD error_result=WSAGetLastError();
int aa=-1;
}
INT32 nOne = 1;
INT32 nAddrLen = sizeof(struct sockaddr_in);
UINT16 uslocalPort = 0;
char chBuf[256];
char *buf=new char[256];
INT32 nStart = GetTickCount(); // SOCKET sock_logr = sServerLog;
///////////////////////////////////////////////////////////// pAddrLocal->sin_family = AF_INET;
pAddrLocal->sin_addr.s_addr = INADDR_ANY;
pAddrLocal->sin_port = 0; ////////////////////////////////////////////////////////////////////////////////////////////////
sEcho = socket(PF_INET, SOCK_STREAM, 0);
if(setsockopt(sEcho,SOL_SOCKET,SO_REUSEADDR,(char *)&nOne,sizeof(nOne))==-1)
{
DWORD error_result=GetLastError(); int aa=-1;
}
if(bind(sEcho,(struct sockaddr *)pAddrLocal, sizeof(struct sockaddr_in))==-1)
{
DWORD error_result=GetLastError(); int aa=-1;
}
if(getsockname(sEcho,(struct sockaddr *)pAddrLocal, &nAddrLen)==-1)
{
DWORD error_result=GetLastError(); int aa=-1;
}
////////////////////////////////////////////////////////连接服务器并接收到IP和端口函数
无
//////////////////////////////////////////////////////////
close(sEcho); sEcho = socket(PF_INET, SOCK_STREAM, 0);
if(setsockopt(sEcho,SOL_SOCKET,SO_REUSEADDR,(char *)&nOne,sizeof(nOne))==-1)
{
DWORD error_result=GetLastError();
int aa=-1; }
///////////////////////////////////我这个BIND 为什么会失败的
if(bind(sEcho,(struct sockaddr *)pAddrLocal, sizeof(struct sockaddr_in))==-1);
{
DWORD error_result=WSAGetLastError();
int aa=-1;
}
解决方案 »
- 怎么在VC的对话框中实现 CAD图的打开 预览
- 请教熟悉FIREFOX XPCOM插件开发的人
- (174)求助:error RC2104 : undefined keyword or key name: ID_ColorToGray
- 继承自CListView的视图,如何改变每行字体颜色?
- 谁有递归分析表达式的代码?能处理[+,-,*,/,^,()]就可
- ?音视频
- 问一个ATL中调用ADO的问题
- 问:为什么98下richedit控件里的汉字会选到一半的地方??请教........
- 希望各位大哥大姐帮忙作一个小程序!*^_^*
- 如何在应用程序之前加入一个密码输入框,请大虾指点一下!
- 做一个小型IDE的思路!
- 中国奥运开幕式,运动员入场时的背景音乐是什么?
pAddrLocal->sin_port = 0;
CLOSE我用的宏
pAddrLocal->sin_family = AF_INET;
pAddrLocal->sin_addr.s_addr = INADDR_ANY;
pAddrLocal->sin_port = 0; 后来你都是用这个结构来绑定
所以你两次绑定都是绑定0端口,那是"非法"的
改成4000,5000,8080都可以,最好大于1024
不要去占用预留给系统的或者"非法"的端口
////////////////////////////////////////////////////////// 这部分我是连接服务器 获得自身外部IPpAddrLocal 其实第一个套接字创建只有 已经有值存在里边了。 。
然后第一个我套接字用完会关闭掉 我第二个套接字会用pAddrLocal
这个和用0应该没有关系的
就说你不要绑定0端口,4000,5000都可以,为什么不试一下
多了个;号崩溃中
bool bOptVal = true;
int bOptLen = sizeof(bool); WSAData wsad;
WSAStartup(MAKEWORD(2,2),&wsad);
SOCKET cli = socket(AF_INET,SOCK_STREAM,0);
SOCKADDR_IN cli_addr;
cli_addr.sin_family = AF_INET;
cli_addr.sin_addr.s_addr = INADDR_ANY;
cli_addr.sin_port = 0;
setsockopt(cli,SOL_SOCKET,SO_REUSEADDR,(char *)&iOptVal,iOptLen);
if(bind(cli,(sockaddr *)&cli_addr,sizeof(cli_addr)))
{
cout<<"bind error! 0"<<endl;
return;
}
closesocket(cli);
cli = socket(AF_INET,SOCK_STREAM,0);
setsockopt(cli,SOL_SOCKET,SO_REUSEADDR,(char *)&bOptVal,bOptLen);
if(bind(cli,(sockaddr *)&cli_addr,sizeof(cli_addr)))
{
cout<<"bind error! 1"<<endl;
return;
}
closesocket(cli);
WSACleanup();
LZ仔细对比一下,找出问题所在