VC++csocket编写局域网聊天工具,如何获取当前客户端IP?

zuike 2007-03-20 12:09:01
最近老师叫我们编写一个局域网聊天工具;
我已经做了主要的代码,能互相通信,现在面临的问题是无法实现以下的功能:

(1)屏幕上显示消息内容时,如果消息来自于客户机,在每一条消息前附上消息源的机器名称。如果消息来自于服务器,则在消息前附上“[server]”.

(2)当一个客户进入聊天室的时候,要求在其他客户机的屏幕上显示“××进入聊天室了”。当一个客户离开聊天室的时候,要求在其他客户机的屏幕上显示“××离开聊天室了”。

由于是用到了MFC不方便贴代码,我就把我的代码上传到了我的个人主页,地址:http://www.815moon.cn/chatdemo.rar

还请各位帮帮忙,十分感激。。。
...全文
1065 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yxw860516 2008-09-08
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 vcScholar 的回复:]
这个时间好像也相隔太久了吧,提问是2007年3月,好多回答居然是2008年9月,这是啥回事.........
[/Quote]

呵呵,是的额!!
lhsxsh 2008-09-08
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 anjuta_c 的回复:]
1.在accept的时候,传入第2,3个参数,函数返回时,第2个参数就是客户端得ip和端口号。
或者accept的时候,不传入第2,3各参数,函数返回时,用返回的套接字调用getpeername来取得客户端ip和端口
得到ip以后,可以调用gethostbyaddr函数来获得该ip对应的名字
如果要区分从本机上发起的连接和其他机器发起的连接,就需要用GetAdaptersInfo(程序初始化时保存本机所有网卡ip地址)

2.很简单啊,要看…
[/Quote]
vcScholar 2008-09-06
  • 打赏
  • 举报
回复
这个时间好像也相隔太久了吧,提问是2007年3月,好多回答居然是2008年9月,这是啥回事.........
captain_x 2008-09-04
  • 打赏
  • 举报
回复
支持1楼
小白熊_ 2008-09-04
  • 打赏
  • 举报
回复
我看看。。学习..
yyunffu 2008-09-04
  • 打赏
  • 举报
回复
仔细看看socket API 函数,里面有详细信息。
你的这个功能并不难于实现。

1楼已经帮你解决大部分了。
Evenque 2008-09-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 anjuta_c 的回复:]
1.在accept的时候,传入第2,3个参数,函数返回时,第2个参数就是客户端得ip和端口号。
或者accept的时候,不传入第2,3各参数,函数返回时,用返回的套接字调用getpeername来取得客户端ip和端口
得到ip以后,可以调用gethostbyaddr函数来获得该ip对应的名字
如果要区分从本机上发起的连接和其他机器发起的连接,就需要用GetAdaptersInfo(程序初始化时保存本机所有网卡ip地址)

2.很简单啊,要看…
[/Quote]
caitian6 2008-09-04
  • 打赏
  • 举报
回复
//根据SOCKET 得到 IP
struct sockaddr_in sa;
int len = sizeof(sa);
getpeername(pUser->nSocket, (struct sockaddr *)&sa, &len);
inet_ntoa(sa.sin_addr);//对方IP
redhat7890 2008-09-04
  • 打赏
  • 举报
回复
[Quote=引用楼主 zuike 的帖子:]
最近老师叫我们编写一个局域网聊天工具;
我已经做了主要的代码,能互相通信,现在面临的问题是无法实现以下的功能:

(1)屏幕上显示消息内容时,如果消息来自于客户机,在每一条消息前附上消息源的机器名称。如果消息来自于服务器,则在消息前附上“[server]”.

(2)当一个客户进入聊天室的时候,要求在其他客户机的屏幕上显示“××进入聊天室了”。当一个客户离开聊天室的时候,要求在其他客户机的屏幕上显示“××离…
[/Quote]
anjuta_c 2007-03-20
  • 打赏
  • 举报
回复
1.在accept的时候,传入第2,3个参数,函数返回时,第2个参数就是客户端得ip和端口号。
或者accept的时候,不传入第2,3各参数,函数返回时,用返回的套接字调用getpeername来取得客户端ip和端口
得到ip以后,可以调用gethostbyaddr函数来获得该ip对应的名字
如果要区分从本机上发起的连接和其他机器发起的连接,就需要用GetAdaptersInfo(程序初始化时保存本机所有网卡ip地址)

2.很简单啊,要看你用的是什么i/o模型了,如果使用WSAAsyncSelect,直接捕获fd_close不就可以了吗?

18,357

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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