怪异的Socket 端口问题!!!!!!!!!!!!!!!!

zhji09 2007-11-07 11:25:00
sListen=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(sListen==INVALID_SOCKET)
{
ShowMessage("creat socket error,"+AnsiString(WSAGetLastError()));
return;
}
if(!Edit1->Text.IsEmpty())
{
localAddr.sin_addr.s_addr=inet_addr(Edit1->Text.c_str());;
}
else
{
localAddr.sin_addr.s_addr=htonl(INADDR_ANY);
}
localAddr.sin_family=AF_INET;
localAddr.sin_port=TcpPort;//???????????????????????????
//问题就在这里了,为什么我指定的是1000,可是用netstat -abno
//在命令窗口里查看实际打开的却是59395端口呢??????
if(bind(sListen,(struct sockaddr *)&localAddr,sizeof(localAddr))==SOCKET_ERROR)
{
ShowMessage("bind error"+AnsiString(WSAGetLastError()));
return;
}
listen(sListen,5);
int iSize=sizeof(clientAddr);
sClient=accept(sListen,(struct sockaddr *)&clientAddr,&iSize);

谢谢各位!!
...全文
143 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
i_love_pc 2007-11-07
  • 打赏
  • 举报
回复
楼上说的对,是字节序问题!
铖邑 2007-11-07
  • 打赏
  • 举报
回复
localAddr.sin_port=htons(TcpPort);
i_love_pc 2007-11-07
  • 打赏
  • 举报
回复
看一下是否是端口冲突的原因!

msdn:
To associate a socket with any valid system port, provide a value of 0 for the .sin_port member of the sockaddr_in structure. This will select an unused system port between 1025 and 5000. As mentioned before, most server applications listen on a specified port, and client applications use this mechanism to obtain an unused local port. Once an application uses this mechanism to obtain a valid local port, it may call getsockname() to determine the port the system selected.

1,317

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 网络及通讯开发
社区管理员
  • 网络及通讯开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧