#include<stdio.h>
#include<windows.h>WSADATA wsadata;
SOCKET server;
SOCKET client;
sockaddr_in local;
sockaddr_in remote;int main()
{
if(WSAStartup(MAKEWORD(2,2),&wsadata)!=0)
{
printf("WSAStartup failed\n");
return 0;
}
if(server=socket(AF_INET,SOCK_STREAM,0)==INVALID_SOCKET)
{
printf("socket failed\n");
return 0;
} local.sin_family = AF_INET;
local.sin_addr.s_addr = INADDR_ANY;
local.sin_port = htons(u_short(24)); if(int n=bind(server,(struct sockaddr *)&local,sizeof(local))!=0)
{
printf("bing failed\n%d\n",n);
return 0;
}
printf("succeed\n");
return 0;
}
程序如上!
程序运行时,bing的返回值为1!
端口换过了,没有用!不知道究竟怎么回事了!
请大家帮帮忙!小弟这里先谢过了。
#include<windows.h>WSADATA wsadata;
SOCKET server;
SOCKET client;
sockaddr_in local;
sockaddr_in remote;int main()
{
if(WSAStartup(MAKEWORD(2,2),&wsadata)!=0)
{
printf("WSAStartup failed\n");
return 0;
}
if(server=socket(AF_INET,SOCK_STREAM,0)==INVALID_SOCKET)
{
printf("socket failed\n");
return 0;
} local.sin_family = AF_INET;
local.sin_addr.s_addr = INADDR_ANY;
local.sin_port = htons(u_short(24)); if(int n=bind(server,(struct sockaddr *)&local,sizeof(local))!=0)
{
printf("bing failed\n%d\n",n);
return 0;
}
printf("succeed\n");
return 0;
}
程序如上!
程序运行时,bing的返回值为1!
端口换过了,没有用!不知道究竟怎么回事了!
请大家帮帮忙!小弟这里先谢过了。
解决方案 »
- 如何使用一个封装好的类?
- 各位高手能帮我看看下面的代码那出问题了吗?谢谢偶!!
- 使用PsSetCreateProcessNotifyRoutine监视进程创建的问题
- 200分求获取CPU序列号、网卡MAC、硬盘出厂序列号、BIOS序列号的可用VC代码
- 送分贴, KeSummer([IN]LPVOID YourLove,[OUT]LPVOID MyLove)请进。
- 急!(mfc)中怎样让工具条上的一个按钮在某一条件下变为非击活状态(即变灰)?在线等
- 对于其他程序, 可否进行子类化?
- 微软专家在吗?请教一个CImage类的问题?为何对同一个流操作会有两种不同的结果呢?hr=m_pImage->Save(fStream,".jpg");//ok hr=m_pImage->L
- 什么的办法将 SDI/MDI 程序的"最大化""最小化""关闭"的按钮去掉?
- SetTimer(),UpdateData()为什么可以直接使用?
- [vc2005]无法打开包括文件:“afxwin.h”: No such file or directory
- 快春节了,散分,散分!祝大家春节快乐!
local.sin_addr.s_addr = htonl(INADDR_ANY);
另外,24端口是保留端口啊
首先,从来没见过在if中这么定义一个变量的,你觉得int n放这合适么?
其次,=的优先级最低,你实际给n里赋值的是下面表达式的值,因此一旦bind返回的不是0,n就是1,不管对不对,我估计这不是你设计的原意bind(server,(struct sockaddr *)&local,sizeof(local))!=0
if(int n=bind(server,(struct sockaddr *)&local,sizeof(local))!=0)
int n=bind(server,(struct sockaddr *)&local,sizeof(local));
if(n!=0)
{
printf("bing failed\n%d\n",n);
return 0;
}
但这是返回值n=-1了....
本来出错的时候返回值就是-1(SOCKET_ERROR),不可能返回你说的1。
if(n!=0)写成if (n == SOCKET_ERROR)更确切些。
你BIND了系统保留的24端口。如果换端口还不行,WSAGetLastError看下Error code。
printf("bing failed\n%d\n",WSAGetLastError);
这样吗?
是的,但是你的WSAGetLastError后面丢了()
这行写的不对
if((server=socket(AF_INET,SOCK_STREAM,0))==INVALID_SOCKET)