我想试一下udp发信息 然后用到Receive方法 每次一运行到哪里都会未响应

pengbingnan1994 2013-07-17 10:23:48
public static String xinxis()
{
string sx = null;
UdpClient udpp = new UdpClient(bdukou);
udpp.Connect(aip, bdukou);
try
{
IPEndPoint ips = new IPEndPoint(IPAddress.Any, 0);
// Byte[] shoux=new Byte[100000];

Byte[] shoux = udpp.Receive(ref ips);//出问题的语句 每次到这里程序就会未响应
sx = Encoding.Default.GetString(shoux);

udpp.Close();

}
catch (SocketException e)
{
MessageBox.Show(e.Message, "提示");

}
return sx; //int shouxx = udpp.Available;
}
...全文
349 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
烈火蜓蜻 2013-07-19
  • 打赏
  • 举报
回复
引用 12 楼 pengbingnan1994 的回复:
Thread T = new Thread(fd); T.Start(); 我一直以为是这样的
这个也可以开新线程
pengbingnan1994 2013-07-19
  • 打赏
  • 举报
回复
我又要去学线程了
pengbingnan1994 2013-07-18
  • 打赏
  • 举报
回复
引用 5 楼 Linux7985 的回复:
这个UDPClient的Receive是不支持设置超时时间, 你需要用到设置超时时间吗?
不知道耶 我照书上写的弄得 一运行就卡壳了 书上都一样的~~
本拉灯 2013-07-18
  • 打赏
  • 举报
回复
用线程去跑 Byte[] shoux = udpp.Receive(ref ips);//出问题的语句 每次到这里程序就会未响应
烈火蜓蜻 2013-07-18
  • 打赏
  • 举报
回复
这个UDPClient的Receive是不支持设置超时时间, 你需要用到设置超时时间吗?
pengbingnan1994 2013-07-18
  • 打赏
  • 举报
回复
那怎么设置超时 让他弹出来
请叫我卷福 2013-07-18
  • 打赏
  • 举报
回复
Receive方法属于阻塞方法 只有接受到数据后 才会返回 不然程序停在那里不往下运行
烈火蜓蜻 2013-07-18
  • 打赏
  • 举报
回复
udpp.Receive 是个同步的接收数据包的方法, 这个方法会一直等到成功接收一个UDP包之后,才会继续往下执行。 或是等到一定的时候,被系统中止抛出异常。
pengbingnan1994 2013-07-18
  • 打赏
  • 举报
回复
肿么没人回答的???
pengbingnan1994 2013-07-18
  • 打赏
  • 举报
回复
Thread T = new Thread(fd); T.Start(); 我一直以为是这样的
烈火蜓蜻 2013-07-18
  • 打赏
  • 举报
回复
因为没有人给你发数据啊,所以你肯定收不到啊。 要多线程很简单啊, Task.Factory.StartNew(()=>{ 代码。。。。 }) 执行一次就开一个线程,执行一次就开一个线程。
pengbingnan1994 2013-07-18
  • 打赏
  • 举报
回复
引用 8 楼 Linux7985 的回复:
当我没说...... 总之是正常现象。
我现在接受不到信息了~~知道是怎么一回事不
pengbingnan1994 2013-07-18
  • 打赏
  • 举报
回复
那现在怎么写~~多线程吗
烈火蜓蜻 2013-07-18
  • 打赏
  • 举报
回复
当我没说...... 总之是正常现象。
基于Java的视频议系统(软件程序+WORD论文文档) 2.1.1 技术可行性 网络视频议是顺应市场的需求而设计的。采用JAVA 编程语言,用eclipse开平台实现。用到多媒体技术(JAVA 多媒体框架JMF),视频和音频用TRP协议传输,用到Socket编程技术,多播技术。网络视频议首先是基于网络传输的,那么就必然要依托于JAVA网络编程的相关知识。在这基础上,由于相关音频、视频,所以还要涉及到JAVA的多媒体技术的相关知识,即JMF (Java Media Framework)。利用JAVA的这个组件,我们可以方便的处理多媒体文件,并基于RTP协议进行实时传输。 2.1.2 操作可行性 系统运行于Windows环境,其用户操作界面友好,便于操作,适合视频议流程。 系统的基本操作如下: 1.启动服务器; 2.用户连接到服务器; 3.进行视频连接; 4.举行议; 5.议完毕,退出系统。 2.2 采用的关键技术介绍 2.2.1 JAVA多媒体技术 JAVA多媒体技术的核心是Java媒体框架 JMF(Java Media Framework)。JMF中包含了许多用于处理多媒体的API,它是一个很好的多媒体编程工具,同时也是一个相当复杂的系统。JMF的主要应用功能之一是多媒体数据流在网络中的实时传输,其RTP包中提供的RTP包中提供的RTPManager(RTP管理器)、TrackContol(轨道控制器)、SendStream(送数据流)、ReceiveStream(接收数据流)、InetAddress(IP地址)和SessionAddress(话地址)等类使得编写网络实时数据传输变得容易,基于RTP协议的RTP应用程序框架为实现流媒体在网络中实时传输提供了Java程序框架,应用它可方便的实现多媒体数据流在网络中的实时传输。实时传输协议RTP是在Internet网上针对多媒体数据流的一种传输协议,RTP被定义为在一对一获一对多的传输情况下工作的,其目的是提供时间信息和实现多媒体数据流的同步。RTP由RTP和RTCP(实时控制协议)两个部分组成。RTP本身并不能为按顺序传送数据包提供可靠的传送机制,可不提供流量控制或拥塞控制,它依靠RTCP提供这些服务。 2.2.2 JAVA 网络编程技术 网络编程的目的就是指直接或间接地通过网络协议与其他计算机进行通讯。网络编程中有两个主要的问题,一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输。在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。   目前较为流行的网络编程模型是客户机/服务器(C/S)结构。即通信双方一方作为服务器等待客户提出请求并予以响应。客户则在需要服务时向服务器提出申请。服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也能及时得到服务。 数据在Internet中是以有限大小的包形式传输的,这些包称为数据报(datagram).但是,由于数据报长度有限,通常必须将数据分解为多个包,在目的地再重新组合。有可能一包或多个包在传输中丢失或遭到破坏。由于网络视频议的实时性要求,不可能让视频传输的每一贞都准确无误。而TCP协议正是为数据可靠传输而设计的。那么选择UDP协议,即用户数据报协议(User Datagram Protocol,UDP),就成为一种必然。 Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以送请求,利用它可以较为方便的编写网络上数据的传递。在Java中,有专门的Socket类来处理用户的请求和响应。利用Socket类的方法,就可以实现两台计算机之间的通讯。在Java中Socket可以理解为客户端或者服务器端的一个特殊的对象,这个对象有两个关键的方法,一个是getInputStream方法,另一个是getOutputStream方法。getInputStream方法可以得到一个输入流,客户端的Socket对象上的getInputStream方法得到的输入流其实就是从服务器端回的数据流。GetOutputStream方法得到一个输出流,客户端Socket对象上的getOutputStream方法返回的输出流就是将要送到服务器端的数据流,(其实是一个缓冲区,暂时存储将要送过去的数据)。 多播通信是一类特殊的IP地址(D类IP地址)这些IP地址并不和任何主机关联,而是专门为多播通信保留下来的,地址

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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