请问我如何知道本地某个端口是否被绑定了,然后使用呢?
解决方案 »
- 一个很少碰到的问题,大家来讨论一下
- CRC32 自校验在 VS2008 中不好使?
- 关于编辑框撤销后留下的无效区域
- 高手:请问在单色图片中,如何设置颜色(不是传统的黑色和白色,可以红色背景和蓝色前景),紧急,谢谢.
- 关于LPISPATCH
- 高分求助 Visual Studio 6 界面增强工具(1.0) 的下载(50分)
- 为是么我的背景图像会遮盖按钮有是么办法吗?
- ShellExecute,ShellExecuteEx叫起来的外部程序吃掉的那块内存为什么不释放呢??
- 技术问题,望解答!注册表头文件(windbg调试):详见帖中
- Report风格CListCtrl垂直滚动条盖住表头问题
- 假设一个应用程序只可能用vb或vc两种工具中的一种编写,请问如何判断它到底是用vb编写的还是vc编写的
- 怎么调试服务程序?
port为0,
然后用Socket.LocalEndPoint取得系统自动分配的可用端口
如果不成功,可以调用GetLastError函数获得详细的错误信息,WSAEINVAL就是端口已被占用的错误码。
sockAddr.sin_family=AF_INET;
sockAddr.sin_addr.s_addr=inet_addr("ip");
sockAddr.sin_port=htons(port);
n=bind(socket,(SOCKADDR*)&sockaddr,sizeof(sockAddr));
if(n==0)
成功
else
已经被使用
但是也是可以强行和别的程序公用一个端口的.
SOCKET socket(PF_INET);
if(socket==INVALID_SOCKET){
AfxMessageBox("invalid socket");
return;
}
sockaddr_in sockAddr;
int n=0;
int port = 0;
sockAddr.sin_family=AF_INET;
sockAddr.sin_addr.s_addr=inet_addr("127.0.0.1");
sockAddr.sin_port=htons(port);
n=bind(socket,(SOCKADDR*)&sockAddr,sizeof(sockAddr));
if(n==0){
AfxMessageBox("Not Used");
}else{
AfxMessageBox("Used");
}请问有错误吗?为什么不管我port多少,结果n老是为-1
socket= socket(AF_INET, SOCK_DGRAM, 0);
if(socket==INVALID_SOCKET){
AfxMessageBox("invalid socket");
return;
}
sockaddr_in sockAddr;
int n=0;
sockAddr.sin_addr.S_un.S_addr = INADDR_ANY;
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = 0;
n=bind(socket,(struct sockaddr*)&sockAddr,sizeof(sockAddr));
if(n==0){
AfxMessageBox("Not Used");
}else{
AfxMessageBox("Used");
}
socket= socket(AF_INET, SOCK_DGRAM, 0);
if(socket==INVALID_SOCKET){
AfxMessageBox("invalid socket");
return;
}
sockaddr_in sockAddr;
int n=0;
sockAddr.sin_addr.S_un.S_addr = INADDR_ANY;
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = 0;
n=bind(socket,(struct sockaddr*)&sockAddr,sizeof(sockAddr));
if(n==0){
AfxMessageBox("Not Used");
}else{
AfxMessageBox("Used");
}
SOCKET socket;
socket= socket(AF_INET, SOCK_DGRAM, 0);报错: 项不会计算为接受 3 个参数的函数如果:
SOCKET socket(AF_INET, SOCK_DGRAM, 0);|| SOCKET socket(AF_INET, SOCK_DGRAM);报错: 初始值设定项太多如果:
SOCKET socket(AF_INET)
通过编译,但是结果仍然是-1
WSADATA wsaData; if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
{
printf("Windows sockets 2.2 startup");
}
else{
printf("Using %s (Status: %s)\n",
wsaData.szDescription, wsaData.szSystemStatus);
printf("with API versions %d.%d to %d.%d\n\n",
LOBYTE(wsaData.wVersion), HIBYTE(wsaData.wVersion),
LOBYTE(wsaData.wHighVersion), HIBYTE(wsaData.wHighVersion));
}
SOCKET asocket = socket(PF_INET,SOCK_STREAM,0);
^^^^^^^
这里不能用socket作为变量,FT