我在C#里面使用UdpClient这个类侦听端口:11000时,如何得到向我发信息人的IP与端口呢

问题描述

我的机器是处在公网,用UdpClient类的Receive()方法来接收信息,但这个方法只能得到信息内容,不能得到信息从哪个IP、端口而来。两台机器都在公网还好做,就把自已的IP打包成数据发送过去就行了。如果有一台机器在内网,内网的机器使用Dns.GetHostEntry(Dns.GetHostName())也只能得到内网IP,打包内网IP发过去也没用了。只要接收方能够得到发信息方的IP和端口就好办了。很急,知道的朋友帮帮忙啊。

解决方案

解决方案二:
Receive需要一下IPEndPoint参数啊,它会返回IP地址的你是没发过帖子导致结贴率为0还是从来没结过?
解决方案三:
C#技术交流群:55180062一起学习,一起成长
解决方案四:
是啊,我是第一次来CSDN,朋友介绍的
解决方案五:
引用1楼cpio的回复:

Receive需要一下IPEndPoint参数啊,它会返回IP地址的你是没发过帖子导致结贴率为0还是从来没结过?

IPHostEntryiphost=newIPHostEntry();iphost=Dns.GetHostEntry(Dns.GetHostName());IPEndPointipend=newIPEndPoint(iphost.AddressList[0],11000);UdpClient=newUdpClient(ipend);byte[]recvData=uc.Receive(refipend);stringrecvString=System.Text.Encoding.UTF8.GetString(recvData);我是这样写的,但接收到的只有发来的信息内容,没有对方的IP和端口号
解决方案六:
自已顶一下
解决方案七:
个人认为二楼说得没错,MSDN中的例子://CreatesanIPEndPointtorecordtheIPAddressandportnumberofthesender.//TheIPEndPointwillallowyoutoreaddatagramssentfromanysource.IPEndPointRemoteIpEndPoint=newIPEndPoint(IPAddress.Any,0);try{//Blocksuntilamessagereturnsonthissocketfromaremotehost.Byte[]receiveBytes=receivingUdpClient.Receive(refRemoteIpEndPoint);...

Receive调用完成后,RemoteIpEndPoint里面就应该是实际发送方的相关信息了。ref不是白ref的。
解决方案八:
我还见过先IPEndPointremoteEP=null;的,做一次Receive,之后再Send的时候,就可以持续用remoteEP了。感觉这么写很自然。开始不知道谁发来消息,一旦收到谁的消息(报文)了,就回应对方。
解决方案九:
我晕。。。byte[]recvData=uc.Receive(refipend);Receive返回已由远程主机发送的UDP数据。publicbyte[]Receive(refIPEndPointremoteEP)remoteEP就是你说的对方ip和端口。。。msdn的备注(虽然中文翻译的叫人难受,但是大概说明白了)备注Receive方法将阻止,直到数据报从远程主机到达为止。如果数据可用,则Receive方法将读取入队的第一个数据报,并将数据部分作为字节数组返回。此方法使用发送方的IPAddress和端口号来填充remoteEP参数。如果在Connect方法中指定了默认远程主机,则Receive方法将只接受来自该主机的数据报。其他所有数据报将被丢弃。如果收到SocketException,请使用SocketException.ErrorCode获取特定的错误代码。获取该代码后,可以参考MSDN中的WindowsSocketsversion2API(Windows套接字第2版API)错误代码文档以获取有关错误的详细说明。
解决方案十:
byte[]data=udpClient.Receive(refendPoint);接收完后参数endPoint会被设置成对方的地址,所以上一句执行完后:endPoint.Address就是对方ipendPoint.Port就是对方端口

时间: 2024-11-02 10:27:22

我在C#里面使用UdpClient这个类侦听端口:11000时,如何得到向我发信息人的IP与端口呢的相关文章

b tils utlis-Dbutils做缓存 当实体类的属性为集合时 怎么做呢 众大神有做过的吗

问题描述 Dbutils做缓存 当实体类的属性为集合时 怎么做呢 众大神有做过的吗 Booster这个类以及 做好 但是User包含List 就不会做了 解决方案 http://wallimn.iteye.com/blog/1606930

javaweb-jsp页面通过href向servlet类页面传递中文参数时出现乱码了怎么办?

问题描述 jsp页面通过href向servlet类页面传递中文参数时出现乱码了怎么办? jsp页面通过href向servlet类页面传递中文参数时出现乱码了怎么办?我在doGet方法中设置了response.setContentType("text/html"); response.setCharacterEncoding("utf-8"); request.setCharacterEncoding("utf-8");所有的编码方式都是utf-8

java收费类网站,资源下载时,怎么解决资源下载路径暴露问题

问题描述 java收费类网站,资源下载时,怎么解决资源下载路径暴露问题,我的网站资源上传在阿里云服务器上面. 解决方案 解决方案二:动态生成下载地址,再在后台去解析可以参考CSDN下载的做法看这个路径http://dldx.csdn.net/fd.php?i=121664396337883&s=e0e3993346e70046453fd422e62ef9a6i和s参数目测就是用来干这个事的解决方案三:自己写下载方法呗,把真实路径隐藏起来!

java类的问题-java开发时,显示图片总要在放大或所放窗口后才会显示出来

问题描述 java开发时,显示图片总要在放大或所放窗口后才会显示出来 怎么解决java开发时,显示图片总要在放大或所放窗口后才会显示出来

php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题

客户端发送的请求类似这样 复制代码 代码如下: $request = array('parameters00','parameters01'); 在客户端的请求你可以制定参数的数据类型,你可以将每个参数单独的放进一个数组,在数组的第二个位置制定参数的数据类型,类似这样 复制代码 代码如下: $request = array( array('parameters00','string'), array('parameters01','boolean'), array('parameters02',

php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题_php技巧

客户端发送的请求类似这样 复制代码 代码如下: $request = array('parameters00','parameters01'); 在客户端的请求你可以制定参数的数据类型,你可以将每个参数单独的放进一个数组,在数组的第二个位置制定参数的数据类型,类似这样 复制代码 代码如下: $request = array( array('parameters00','string'), array('parameters01','boolean'), array('parameters02',

C#使用UdpClient类进行简单通信的实例_C#教程

UdpClient 类提供了一些简单的方法,用于在阻止同步模式下发送和接收无连接 UDP 数据报. 因为 UDP 是无连接传输协议,所以不需要在发送和接收数据前建立远程主机连接.但您可以选择使用下面两种方法之一来建立默认远程主机: 使用远程主机名和端口号作为参数创建 UdpClient 类的实例. 创建 UdpClient 类的实例,然后调用 Connect 方法. 可以使用在 UdpClient 中提供的任何一种发送方法将数据发送到远程设备. 使用 Receive 方法可以从远程主机接收数据.

ASP.NET 2.0的全球化与本地化之全球化

asp.net 一. 加入全球化信息 在我的网站中,在创建资源文件并加入一些本地化数据后,我首先开始使用显式本地化来设置控件(例如,在我的网站中的标签)的文本,以便它们可以从资源文件中得到它们的值.既然存在四种语言:所以,除一个完全可依赖的资源文件之外(没有本地化命名),我创建了四个资源文件. 注意,这些资源文件都以本地化标记作为它们的中间名称,因此,我需要把UICulture设置为与该本地化相同的名字以便ASP.NET存取这些资源文件. 但是,问题是:我该怎样在PostBack事件中动态地改变

C#编程中怎么对文件目录进行实时监控

 首先,我们需要对.net提供的FileSystemWatcher类有所了解.我有些懒,找了MSDN对该类的描述. FileSystemWatcher类侦听文件系统更改通知,并在目录或目录中的文件发生更改时引发事件. 使用 FileSystemWatcher 监视指定目录中的更改.可监视指定目录中的文件或子目录的更改.可以创建一个组件来监视本地计算机.网络驱动器或远程计算机上的文件. 若要监视所有文件中的更改,请将 Filter 属性设置为空字符串 ("") 或使用通配符("