网络高手请,Socket应用中的远程地址/端口获得问题

scegg 2003-10-23 08:04:49
您好。
由于我刚开始用Socket做一个软件,需要TCP或UDP的连接中继,也就是说要转发连接或数据。现在在实现IP或端口过滤的时候发现问题(我以前是用Winsock控件的)。

1 TCPListener能不能在不Accept的情况下知道Request方的IP和Port?
2 UDP协议可不可以得到数据(最后来的数据)发送方的IP和Port?
3 如果第一个不行,那么在Accept后如何得到对方的IP和Port(最好能做到第一个)?
4 因为一台计算机可能有多个IP,能不能检测到本地机的所有IP?

谢谢了。
请不要直接帖MSDN,那个我也有。

用Socket或TCPCilent/UDPCilent都可以。

原帖:
http://expert.csdn.net/Expert/topic/2379/2379824.xml?temp=.6888697
我发了很久没人回复。能回答的人,请到那里报到,我两个50分都给你。
...全文
132 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xixigongzhu 2003-10-23
  • 打赏
  • 举报
回复
一般说来,如果不阻塞,应该是这样的。
scegg 2003-10-23
  • 打赏
  • 举报
回复
非常感谢。
后继问题:UDP模式可以有很多人向一个端口发消息,那么,这些消息的来源都能迅速反应在SOCKET的相关属性上吗?
xixigongzhu 2003-10-23
  • 打赏
  • 举报
回复
1、在.net不行,如果没有Accept,根本没有办法知道是否有客户端连接;
2、如果Udp要发送和接收数据的话,必须先知道服务端的IP和Port;如果是服务端的话,由于知道连接的Socket,而Socket有客户端和服务端的IP和Port;
3、Socket s = tcpl.AcceptSocket();
s.LocalEndPoint是本地(服务端)
s.RemoteEndPoint是远程(客户端)
取IP:
IPEndPoint ip = (IPEndPoint) s.RemoteEndPoint;
ip.Address.ToString()就是IP
ip.Port是端口
4、IPHostEntry entry = Dns.GetHostByName(Dns.GetHostName());
IPAddress[] adds = entry.AddressList;//所有可能的地址;

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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