请教一下UDP通讯的问题

问题描述

各位大家好:我想做一套系统,在客户那放的是类似取票的设备,客户输入验证码后,前端设备与后台通讯,把信息提交到后台验证.后台将验证结果返回到前台设备上.前台设备再根据回传的信息做相应的控制.那么问题来了.1)我现在采用的是UDP模式,在前端设备上做了发送回应的确认处理,防止,发出的数据服务器没有收到.那我的服务器再发送回应数据的时候,还需要再等客户端再回发一次它收到我的回发数据的确认包吗?2)环境是前端设备分散在实际的商家店铺了.我的服务器准备放到IDC机房里.采用UDP通讯协议还是TCP协议呢?哪种协议更适合这样的实际环境?3)UDP我采用的是异步接收方式,然后直接send数据回去.当然这样做回应echo没什么问题.但是如果在接收到数据后,需要查询数据库做读写操作,将会花费一些时间,这样必然会拖延下次BeginReceive对上来的数据的响应.那我想在EndReceive里直接起线程处理这些业务查询并回传.然后执行后就结束了这个线程这样的处理可以吗?很多文章说起线程调度关闭线程也是非常耗时的,效果未必更好.建议用线程池来处理.我对线程池不太了解,有一个疑问,如果线程池里线程最大数是15个,那我接收到数据往线程池里加线程的时候,超过15个线程怎么办?这个过程的机制是怎么的?我认为异步同步接收和并发性没有什么关系,不知道这样的想法对与否.怎么提高并发性能呢?请各位指点迷津.

解决方案

解决方案二:
才疏学浅,只回答你第一个问题,两端用UDP通信,可以使用确认-重发机制,当一个端点发送一个新的数据包时,应当收到确认消息才能算发送成功。当然了,确认消息就不用再确认一次了,否则,这就成了一个无限的发送过程了。
解决方案三:
不知道选用UDP而非TCP是基于什么考虑,如果要求数据发送与接收高效,保证有序,有收包确认等,需要在UDP协议上构建自己的协议。这方面可以参考UDT(UDP-basedDataTransferProtocol)对于耗时操作,交互必须是异步的,否则可用性堪忧。选择单独线程还是线程池要根据业务特性,如果处理业务是长连接,那就使用单个线程。如果工作处理都是短任务,很快能结束掉,那就不要自己去起停线程,交给线程池就行。线程池出现满的情况,说明系统负载过大,超过处理能力了,这个时候如果技术上没有办法提升效率,server只能拒绝服务以保证系统的安全,否则会导致系统资源大量占用,严重的可能导致程序崩溃、系统死机
解决方案四:
to:xian_wwq我想了解一下,这样的系统结构,前端在客户店里,后端在运营商机房,哪种通讯方式比较被广泛采用.TO:johnliuyuanTHANKu

时间: 2024-08-01 08:59:05

请教一下UDP通讯的问题的相关文章

udp-ANDROID UDP通讯 闪退 急求

问题描述 ANDROID UDP通讯 闪退 急求 刚刚写了一个UDP通讯的类, public class EasyUDPClient { public int udpRemotePort; public String S_ip; public DatagramSocket socket; private InetAddress serverAddress; public EasyUDPClient(String ServerIP,int Port) { udpRemotePort = Port;

单向协议-UDP通讯是单向还是双向

问题描述 UDP通讯是单向还是双向 UDP编程中,为什么服务器不能向客户端发送消息呢,客户端也不能接收服务器发送的消息? 服务器代码: import java.net.*; public class Server2 { public static void main(String[] args) { try { //向客户端发送消息 byte[] b="我是服务器".getBytes(); InetAddress ia= InetAddress.getByName("loca

JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用

JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例,我们暂时不讲了,我们直接来重点吧,关于JAVA的网络请求是怎么实现的?当然是HTTP协议,但是不可否认,他的概念和思想都是我们必须去涉及的,包括后面的tcp和socket等,好吧,我们开车吧! 一.JAVA网络请求概述 关于JAVA的网络请求,我们大致的可以分为以下几个分类 网络模式 OSI TCP

JAVA通信编程(四)——UDP通讯

经过TCP和串口通讯编程的了解,相信大家应该掌握CommBuff的套路了,这里首先展示的是通过UDP编程的方式实现CommBuff接口,之后通过简单工厂模式的应用说明如何屏蔽底层通讯差异. UdpImpl类如下: package com.zzh.comm; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress;

TCP UDP 通讯编程

问题描述 最近的工作涉及到使用NIO进行通讯编程.也不知道用哪个框架比较好?看了XSOCKET官网说已经不跟新了.是不是最好不要用这个了?至于MINAGRIZZLY哪个更好用呢?这个需要20万的并发量,请这方面的高手指点. 解决方案 解决方案二:比较关注这种问题,等待高手来回答....解决方案三:该回复于2010-12-28 16:46:35被版主删除解决方案四:帮顶,接分哈解决方案五:新手继续顶解决方案六:没接触这方面的东西,等高手解决方案七:没接触这方面的东西,期待高手解决解决方案八:推荐m

请教, 三星手机串口通讯数据格式是怎样的?如何实现“串口调试助手"与三星手机通讯

问题描述 怎样才能使"串口调试助手"与三星手机成功通讯.以前用的是诺基亚的手机,现在换成三星的手机,手机发过来的数据是乱码 解决方案 解决方案二:路过帮顶=============11月6日,论坛升级公告,积分已经做了调整!http://topic.csdn.net/u/20081107/11/b27dc75f-14b1-4594-9de3-5b18d9e36a11.html此次调整增加了两个新的可用分获取渠道:1:帖子被推荐(加精)后,帖主可以获得88分的可用分奖励:2:帖子结帖后会

TCP SERVER/CLIENT UDP通讯

问题描述 花了快10天学习了TCPUDP这块的程序,今天终于把UDP和TCPServer端与Client端的程序调试通了.现在把源码分享给需要的朋友!http://pan.baidu.com/s/1nt20VVV程序还有很多可以完善修改的地方,也欢迎大家提出指导意见!分享是为了以后能学习到更多的知识!

C#Udp通讯时在局域网中正常,放到外网上就丢包,请问怎么回事,如何处理?

问题描述 如题,谢谢回答!! 解决方案 解决方案二:udp丟包是很正常的事情,本身udp協議並不保證數據能夠準確到達對方如果要求穩定,數據完整,應該使用tcp

用udp协议通讯示例

一.绪言 udp是一种面向非连接,不可靠的通讯协议,相对于tcp来说,虽然可靠性不及,但传输效率较高.所以在网络上仍有很大的用途.这几日需要了解下udp通讯的过程,上网发现这方面的资料还挺少.于是仔细的翻找了下msdn,基本上搞清楚了udp通讯的过程.做了一个测试的例子.希望对大家有帮助. 二.udp的通讯过程 server端: open a socket(socket)--->name the socket(bind)--->send and receive data(sendto recv