C#使用UDP协议开发服务端遇到的问题~~

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#使用UDP协议开发服务端遇到的问题~~相关的知识,希望对你有一定的参考价值。

各位老师,我想请教一个问题,我写了两个小程序,一个是Udp的服务端,一个是客户端,客户端发送数据给服务端,服务端返回处理结果给客户端。
为什么客户端收不到服务端返回的数据?用TCP&UDP测试工具却可以收到?用抓包工具也可以看到数据已经发出去了...

参考技术A 0.0!
为什么?
为什么呢= =
嗯...

客户端用UdpClient的Send方法发送数据,用BeginReceive方法接收数据;如果服务端都用异步接收和发送就没问题;但是我想再提高效率,从网上下载了一个程序用的
SocketAsyncEventArgs
来接收数据,
发送用的Socket,
这样服务端可以接收到数据,但是客户端收不到"返回"的数据。

"TCP&UDP"
测试工具却可以收到。不知道是为什么。。

亲..看看UDP协议先.

UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是 OSI 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。

提供面向事务的简单不可靠信息传送服务

是 OSI 参考模型中一种无连接的传输层协议

无连接的传输层协议

无连接.

这三个字意味着
当你的UDP客户端返回值的时候.
已经不是刚刚发送值所建立的通信管道了
所以
你正常返回了
但是对面没有收到.

TCP&UDP测试工具是侦听所有来到本电脑的所有数据

所以.他收到了.
抓包是抓取所有发出的数据.所以他也抓到了

可惜的是
你返回的通信管道已经不是你的两台编码计算机第一次通信的管道.所以.返回是返回了.但是不知道返回到哪个端口.哪个时间段,哪个位置了.

这个是概念上的错误.如果还有不明白.请继续提问.
参考技术B 你在客户端开了UDP的监听没有?追问

客户端用UdpClient的Send方法发送数据,用BeginReceive方法接收数据;如果服务端都用异步接收和发送就没问题;但是我想再提高效率,从网上下载了一个程序用的SocketAsyncEventArgs来接收数据,发送用的Socket,这样服务端可以接收到数据,但是客户端收不到返回的数据。用TCP&UDP测试工具却可以收到。不知道是为什么。。

急求C#程序,用UDP协议实现客户端与服务器之间的信息交互!谢谢

想用C#实现以下功能,点击“连接”按钮,触发以下事件:A每间隔一秒向B发送查询消息,B应当回复响应消息,如果A连续3次没收到回复消息,“连接”按钮变灰。要使用UDP协议,A和B的端口号已知,IP地址也已知。
想知道是否需要开一个线程,“间隔一秒”如何实现,最好能给全代码。我是新手,研究了好久,请各位高手帮忙,不胜感激!

为每个请求开个线程,执行一次Send()操作,就Thread.Sleep(1000);外边是While(IsWorking)...

还是自己写代码会比较有收获
参考技术A http://msdn.microsoft.com/zh-cn/library/system.net.sockets.udpclient(v=VS.90).aspx 参考技术B 网上多的是。给你个吧,自己去搜索。

可扩展多线程异步Socket服务器框架EMTASS 2.0

参考资料有源码下载。自己看吧。

参考资料:http://blog.csdn.net/hulihui/archive/2008/10/27/3158613.aspx

参考技术C 这个就是一个通信问题。你可以找本书,有许多这个的实例

以上是关于C#使用UDP协议开发服务端遇到的问题~~的主要内容,如果未能解决你的问题,请参考以下文章

没有集合服务器的 C# UDP 穿透

网络编程遇到相关问题

TCP粘包和拆包

急求C#程序,用UDP协议实现客户端与服务器之间的信息交互!谢谢

使用Gopher-lua遇到的疑难杂症与优化

Android 使用udp发送广播