当TClientSocket 和TServerSocket建立了连接后,怎样获得连接在Server上的Client的IP?

BoweirrKing 2003-11-29 06:27:27
当TClientSocket 和TServerSocket建立了连接后,怎样获得连接在Server上的Client的IP?
在什么时候获得合适呢?
我在OnAccept事件发生的时候使用:MyServerComputer->Socket->RemoteAddress来取得Client的IP时就出错,怎么回事?
...全文
79 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
BoweirrKing 2003-12-01
  • 打赏
  • 举报
回复
ok. ok
铖邑 2003-12-01
  • 打赏
  • 举报
回复
回复人: BoweirrKing(忽然变傻) ( ) 信誉:100 2003-11-29 21:04:00 得分:0


楼上的,不好意思,你理解错了。请仔细看我的问题。

是你搞错了!!!请看清楚!!!


在OnAccept事件中,可以直接使用Socket参数,原型是:
typedef void __fastcall (__closure *TSocketNotifyEvent)(System::TObject* Sender, TCustomWinSocket* Socket);

void __fastcall TForm1::ServerSocket1Accept(TObject *Sender,
TCustomWinSocket *Socket)
{
ShowMessage(Socket->RemoteAddress); // 这是接受连接那个客户的地址
}
//---------------------------------------------------------------------------


如果你通过TServerSocket访问客户端,因为客户端有多个,是存在一个数组ServerSocket->Socket->Connections里。客户端个数是ServerSocket->Socket->ActiveConnections。
for(int i = 0; i < ServerSocket->Socket->ActiveConnections; i ++)
ShowMessage(ServerSocket->Socket->Connections[i]->RemoteAddress); // 穷举所有客户的地址

不能直接访问ServerSocket->Socket]->RemoteAddress!!!
人家好心解答,请你看清楚点!
GFK 2003-11-30
  • 打赏
  • 举报
回复
如此简单的问题,你在TServerSocket的OnAccept事件写上下列代码就可以了。
ShowMessage(Socket->RemoteAddress);
MartinWang 2003-11-30
  • 打赏
  • 举报
回复
--我在OnAccept事件发生的时候使用:MyServerComputer->Socket->RemoteAddress来取得Client的IP时就出错,怎么回事?--
你在ClientConnect事件上写试试?


JedyWoody 2003-11-30
  • 打赏
  • 举报
回复
RemoteAddress
BoweirrKing 2003-11-30
  • 打赏
  • 举报
回复
在使用语句MyServerComputer->Socket->RemoteAddress取地址的时候,总是出现“Windows Socket Error(10057), on API 'getpeername'”的错误!为什么啊?

为什么直接使用由参数传递进来的Socket->RemoteAddress取地址的时候就不出错呢?

那个Socket->Listen()函数需要我们手动调用么?
BoweirrKing 2003-11-29
  • 打赏
  • 举报
回复
不行,出错。有没有其他方法?
GFK 2003-11-29
  • 打赏
  • 举报
回复
Socket->RemoteAddress;
Socket->RemoteHost;
BoweirrKing 2003-11-29
  • 打赏
  • 举报
回复
楼上的,不好意思,你理解错了。请仔细看我的问题。
铖邑 2003-11-29
  • 打赏
  • 举报
回复
在OnAccept事件中,可以直接使用Socket参数,原型是:
typedef void __fastcall (__closure *TSocketNotifyEvent)(System::TObject* Sender, TCustomWinSocket* Socket);

如果你通过TServerSocket访问客户端,因为客户端有多个,是存在一个数组ServerSocket->Socket->Connections里。客户端个数是ServerSocket->Socket->ActiveConnections。
BoweirrKing 2003-11-29
  • 打赏
  • 举报
回复
我这里没有啊。
chifengwatch 2003-11-29
  • 打赏
  • 举报
回复
看看BCB里的例子,很详细的

1,317

社区成员

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

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