android udp真是垃圾啊还是我写得垃圾。 [问题点数:40分,结帖人xujianxiang]

一键查看最优答案

确认一键查看最优答案?
本功能为VIP专享,开通VIP获取答案速率将提升10倍哦!
Bbs2
本版专家分:124
结帖率 97.58%
Bbs2
本版专家分:199
Bbs3
本版专家分:833
Bbs2
本版专家分:124
Bbs2
本版专家分:124
Bbs1
本版专家分:0
Android 发送udp消息

参考,感谢两位大哥的文章 http://www.cnblogs.com/liqw/p/4867657.html https://blog.csdn.net/u012106397/article/details/51492867 <em>udp</em>很早就听说过,但是由于其是面向无连接的协议,因此一直很少用到。但是在一些即时通讯方面,由于对延时有较高的要求,因此还是会使用到。 1.Android...

UDP主要丢包原因及具体问题分析

一、主要丢包原因   1、接收端处理时间过长导致丢包:调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失。对于这种情况可以修改接收端,将包接收后存入一个缓冲区,然后迅速返回继续recv.   2、发送的包巨大丢包:虽然send方法会帮你做大包切割成小包发送的事情,但包太大也不行。例如超过50K的一个<em>udp</em>包,不切

Android 简单UDP通信框架(Kotlin)

使用说明 UDPManager是一个静态工具类。复制粘贴进去就可以使用。 使用前初始化: 1.通过UDPManager.init(port:Int)进行初始化。(默认本地端口为12306,可通过port参数修改) 2.通过UDPManager.setIPandPort(dstIP:String,dstPort:Int)设置目的IP和目的端口号。 使用时: 1.作为客户端: 使用sendMsg()...

【Android Socket专题】:UDP通信客户端app的demo的实现

关于UDP通信其实可以不用多做累述,多数像我一样的朋友在此基础上也只是为了应用,需要了解下该了解的就可以了,具体的想要对这个协议研究深入的,可以自己努力!我这儿只做Android客户端的应用实现,注意是客户端,不是服务器,那么服务器怎么实现呢?下次有空再<em>写</em>服务器的实现,先看客户端。 我们既然是在Android下实现的,我们第一件事情肯定是想好我们大概想做成什么样子,那么为了简单,我在这是这样

android下实时传输h264并播放

利用<em>android</em>自带的MediaCodec,解码Socket实时传输过来的H264视频数据,通过SurfaceView播放

Android Socket通信(二) --UDP,单播,广播和多播(组播)

系列文章: Android 使用socket.io 实现实时通信 在上章中,我们学习了 socket 的基本使用。但都是基于TCP的,这篇,我们来学习一些 Socket 的UDP 的操作,并了解多播和广播的概念,为接下来的局域网文件传输,打上一个很好的基础。 一、认识 UDP 与 TCP 不同,UDP 是一个面向数据包的传输层协议,进程的每一个输出操作都正好产生一个UDP数据报,并组装成一份待...

安卓UDP通信

安卓UDP通信 天冷了,躺在被窝里看电影是我等屌丝一个不错的选择,可是问题来了,下床是一件很痛苦的事情,该怎样关笔记本呢?好吧,就是这个题目了。 Android <em>udp</em>通信和其他的基本上无区别,一运行程序就崩溃,一下又找不到原因http://bbs.csdn.net/topics/390141935 所以在onCreate() 里加入下面语句,     StrictMode.se

Android网络编程TCP、UDP(一)

一、TCP与UDP简介TCP和UDP都属于TCP/IP参考模型中传输层的协议,且都是基于网际互联层IP协议。一位大神作了一个很形象的比喻:TCP和UDP使用IP协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。(参考:http://blog

Udp丢包排查过程

1. 查看<em>udp</em>丢包,cat /proc/net/snmp | grep Udp(比netstat –su效果好) 2. 查看网卡丢包(ifconfig 或者ethtool –S eth1) 3. Netstat –alupt 查看队列里现存的包数,如果过多说明有问题。 4. 查看socket队列长度,cat /proc/sys/net/core/rmem_default (wmem_def

Android UDP

一、UDP协议全称是用户数据报协议 ,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。 1、UDP是一个无连接协议,传输数据之前源端和终端不建立连接; 2、不维护连接状态,包括收发状态等,因此一台服务机可同时向多个客户机传输相同的消息; 3、UDP信息包的标题很短,8个字节,对于TCP的20个字节信息包的额外开销很小; 4、吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的...

安卓UDP接收数据丢包问题?

做了一个个单片机通信的APP,用的wifi通信,不过两者传数据,使用UDP会丢包!用网络助手试过,能够接收全部,但是一用单片机发数据,只能接收前20个左右的数据,后面丢包!不知道大家有什么好方法解决吗?我把数据缓存放大了,线程也sleep了,请大家指教!

android基于UDP协议发送数据的demo

最近在做一个基于TCP协议的项目,设备在对接第三方客户接口时,客户一个功能是基于UDP协议,这样设备还需要基于UDP协议完成数据发送。 故在此<em>写</em>了一个demo,demo分为两部分: Android基于UDP发送数据; 编<em>写</em>一个PC端服务,服务接收<em>android</em>设备发送来的UDP数据; Android端代码: private InetAddress mAddress...

安卓UDP Socket通信App源码

安卓Socket UDP通信App源码,适用于Socket编程学习,或者测试使用。支持如下功能: 1. UDP发送:指定ip地址、端口号,可以发送信息到指定地址。支持定时发送,可以动态修改ip地址和定

使用UDP大量丢包的问题如何解决?

欲开发一套机房管理系统(300台左右),拟采用Winsock(UDP协议)解决. 在测试中发现,服务器对三台机器各重复发送1000条记录,丢包很严重,平均每台机器只接收到400条左右. 请问,这一问题

关于Android利用局域网进行UDP通信的问题

我<em>写</em>了一个小程序准备利用UDP和电脑之间进行通信,然后基于这个做一点东西,可是问题是我用AVD测试很好用的,但是用真机测试就是不行。 我的思路是让电脑和Android设备连接一台路由器,路由器为两台设备分配固定的ip地址进行通信。 拜托大家帮我看看啊,我这才是第一步就郁闷的要死 下面是代码。 1:MainActivity package com.company.zebork.test<em>udp</em>ll; import <em>android</em>.app.Activity; import <em>android</em>.content.Context; import <em>android</em>.net.wifi.WifiManager; import <em>android</em>.os.AsyncTask; import <em>android</em>.os.Bundle; import <em>android</em>.os.Handler; import <em>android</em>.os.Message; import <em>android</em>.view.Menu; import <em>android</em>.view.MenuItem; import <em>android</em>.view.View; import <em>android</em>.widget.Button; import <em>android</em>.widget.EditText; public class MainActivity extends Activity { EditText text; Button send; Handler handler; Message msg; EditText ad; String address; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); text = (EditText) findViewById(R.id.editText); send = (Button) findViewById(R.id.send); ad = (EditText) findViewById(R.id.editText2); handler = new Handler() { @Override public void handleMessage(Message msg) { text.setText(""); } }; /* send.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { handler.handleMessage(msg); } });*/ send.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { System.out.println(ad.getText().toString()); AsyncTask toSend = new AsyncTask() { @Override protected Void doInBackground(String... params) { address = ad.getText().toString(); UDPClient client = new UDPClient(address); System.out.println("here" + address); client.send(text.getText().toString()); msg = new Message(); handler.sendMessage(msg); return null; } @Override protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); } }.execute(address); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.menu_main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } } 2、UDPClient package com.company.zebork.test<em>udp</em>ll; import java.io.IOException; import java.net.*; public class UDPClient { private DatagramPacket dp; private DatagramSocket ds; private byte[] buf; private String address; public UDPClient(String address) { buf = new byte[4096]; this.address = address; System.out.println("??" + address); try { ds = new DatagramSocket(8888); } catch (SocketException e) { e.printStackTrace(); } } public void send(String str) { buf = str.getBytes(); try { dp = new DatagramPacket(buf, buf.length,new InetSocketAddress(address,5679)); ds.send(dp); ds.close(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (SocketException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } 3、AndroidManifest【有些权限我都没有用到,因为调试这个错误才加上的】 4、activity_main.xml 5、服务器的Java文件,我是用JavaSE<em>写</em>的,因为不会javaEE import java.io.IOException; import java.net.*; import java.awt.*; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class TestUDPClient extends Frame{ private static DatagramPacket dp; private static DatagramSocket ds; private static TextField text; private static TextArea ta; public static void main(String[] args) { Frame f = new TestUDPClient(); f.setLocation(200, 200); f.setSize(300,200); f.setVisible(true); text = new TextField(); ta = new TextArea(); f.add(text,BorderLayout.SOUTH); f.add(ta,BorderLayout.CENTER); f.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { if(ds!=null) ds.close(); System.exit(0); } }); startServer(); } public static void startServer() { byte[] buf = new byte[4096]; dp = new DatagramPacket(buf,buf.length); try { ds = new DatagramSocket(5679); } catch (SocketException e) { e.printStackTrace(); } while(true) { try { ds.receive(dp); if(ta.getText().length() > 0) ta.setText(ta.getText() + "\n" + new String(buf,0,dp.getLength())); else ta.setText(new String(buf,0,dp.getLength())); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }

Android编程:双工udp客户端

Android编程:双工<em>udp</em>客户端本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.环境:主机:WIN10开发环境:Android Studio 2.2 Preview 3说明:在>介绍了编<em>写</em>UDP客户端方法,在此客户端中发送的每一个数据包都会产生一个线程,这个并没有必要,所以编<em>写</em>新的程序修正此问题。新客户端具有以下功能:双工通信。发送一个线程,接收一

Android Mina框架是否支持UDPClient发送广播包?

如题,请问mina框架是否支持发送<em>udp</em>广播包,以下面代码发送,会提示服务器异常。 ``` // 创建一个tcp/ip 连接 //创建客户端连接器 Log.i("TAG","正在创建Socket连接!"); Log.i("TAG","PORT:"+PORT+",HostName:"+hostName); NioDatagramConnector connector=new NioDatagramConnector(); /*---------接收字符串---------*/ // //创建接收数据的过滤器 DefaultIoFilterChainBuilder chain = connector.getFilterChain(); // 设定这个过滤器将一行一行(/r/n)的读取数据 //chain.addLast("myChin", new ProtocolCodecFilter( // new TextLineCodecFactory())); /*---------接收对象---------*/ // 创建接收数据的过滤器 // 创建接收数据的过滤器 chain.addLast("codec", new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8") //, //LineDelimiter.WINDOWS.getValue(), //LineDelimiter.WINDOWS.getValue() ))); //设置日志记录器 //chain.addLast("Logger", new LoggingFilter()); //设置连接超时检查时间 connector.setConnectTimeoutCheckInterval(10000); //设置事件处理器 connector.setHandler(new ClientHandler(this.myHandler)); //建立连接 Log.i("TAG","开始建立连接!"); cf=connector.connect(new InetSocketAddress( hostName,PORT)); cf.addListener(new IoFutureListener(){ @Override public void operationComplete(IoFuture future) { // TODO Auto-generated method stub ConnectFuture connFuture = (ConnectFuture) future; if (connFuture.isConnected()) { session = future.getSession(); try { sendData(); } catch (InterruptedException e) { e.printStackTrace(); } } else { Log.i("TAG","not connect"); } } }); ``` 其中hostname是“255.255.255.255”,port是9999

Android开启热点进行UDP通信中的坑

<em>android</em> 开启热点进行<em>udp</em>通信

( 第一个Android的完整程序(UDP通讯工具)

Android UDP通信之Handler、Activity、UI更新

android ------- TCP与UDP

TCPTCP(Transmission Control Protocol,传输控制协议) 即传输控制协议,是一种传输层通信协议 特点:面向连接、面向字节流、全双工通信、可靠 面向连接:指的是要使用TCP传输数据,必须先建立TCP连接,传输完成后释放连接,就像打电话一样必须先拨号建立一条连接,打完后挂机释放连接。全双工通信:即一旦建立了TCP连接,通信双方可以在任何时候都能发送数据。可靠的:指的是通...

UDP 服务端 丢包严重 ,30%左右的丢包率...

服务端的代码: static void Main(string args) { IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());

android硬编码h264数据,并使用rtp推送数据流,实现一个简单的直播-MediaCodec(一)

<em>写</em>在前面:我并非专业做流媒体的coder,对流媒体行业无比崇拜,只是做了几年安卓车载ROM,对安卓AV开发算是略懂。本篇博客是我对MediaCodec编解码和rtp推流的一次尝试,希望能给有需要的朋友一些细微的帮助,不喜勿喷,如果有不对的地方希望大神指正共同进步,拜谢。  公司近期有意向做直播方面业务,叫我先测试下安卓MediaCodec硬解码并推送实时数据流。由于之前做过USB摄像头用到过Medi

Android通过Socket实现TCP、UDP通信

参考: 《深入理解Android网络编程》 https://www.jianshu.com/p/089fb79e308b 一、TCP,UDP基本介绍 1. TCP 传输控制协议(Transmission Control Protocol,TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP的可靠体现在它的三次握手和四次挥手上,不熟悉的可以参考下我的另外一篇文章,HTTP请...

android udpmanager

<em>android</em> 网络编程中,两客户端之间进行通讯时不通过服务器,也就是p2p的方式,下面给大家整理了一个通讯中常用的<em>udp</em>manager工具类。 代码如下: 1 package com.example.chess; 2 import java.io.IOException; 3 import java.net.DatagramPacket; 4 import java.net...

Android实现 UDP

2. [代码]核心功能代码      ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

(一)Android 两部手机通过UDP在局域网内通信

转载请注明出处:https://blog.csdn.net/stormxiaofeng/article/details/80437414 最近学习了一下socket通信相关的知识,决定从UDP进行文字传输开始做起。华为手机效果如图: 我的另一部是小米手机:网络IP为192.168.1.118 就不截图了,这部华为手机IP为192.168.1.102,注意上面填<em>写</em>的IP为接收方的IP而不是自...

安卓UDP文件传输

本机测试,ip是127.0.0.1,可以修改其中的代码,两部安卓手机进行测试。将字符串封装到.txt文件中,再传输.txt文件,接收到文件进行解析,并将文件中的内容展示出来。 模拟安卓<em>udp</em>文件传输的

MediaCodec硬编码为H264并通过UDP发送

最近研究视频通话,<em>写</em>一下关于摄像头采集视频并使用MediaCodec硬编码为H264的过程,希望对有需要的朋友有所帮助。 说实话,刚开始不太熟折腾了挺久的,网上这方面的东西比较少,很多都是代码片段或者就是其他语言<em>写</em>的。这里贴的是本人亲测能用的,希望需要的朋友能少走一些弯路吧。 直接来看看代码吧。都有详细的注释的。 package com.kokjuis.travel.activit...

Android/安卓UDP协议网络收发例程(实用)下载

这是一个安卓端采用<em>udp</em>协议实现数据的发送和接受的demo 相关下载链接://download.csdn.net/download/haovin/10416644?utm_source=bbsseo

UDP解决丢包问题总结

收包率低/丢包率高的原因分析 (1) 缓存太小,不能及时接收数据。 连续多个UDP包超过了UDP接收缓冲区大小 ,比如: 如:UDP包过大 如:UDP发包速率过快,突发大数据流量超过了缓冲区上限 (2)recvfrom()接收到数据之后处理速度太慢 如果数据接收和处理是连续进行的,那么可能由于数据处理过慢,两次recvfrom调用的时间间隔里发过来的包丢失 对应的解决方法 UD...

Android 锁屏后无法接收UDP

今天遇到一个很神奇的问题。 应用中有一个服务,服务中使用线程池 进行UDP的接收和发送。 但是,当锁屏后,数据无论如何都接收不到,当打开锁屏的时候,数据接收又恢复正常了。 并且,使用电源锁也没有任何效果。 PowerManager pm = (PowerManager)getSystemService(Context.POWER_SERVICE); wl = pm.newWakeLoc

UDP为什么丢包很严重??

发送1000次。 有发送出去200多的,300多的,还有400多的。 收到的数据一般会少收到100到200条。 测试了10次。数据如下。 实际发送 / 实际接收 233 / 156 523 / 445

UDP全双工通信的实现

要解决全双工通信需要开两个线程,一个发送线程,要监听键盘的输入,另一个是接收线程,要监听接收队列。 c++的多线程编程问题在此不在这里叙述了,以后可能会单独<em>写</em>一篇总结一下。 由于是全双工,所以

Android UDP通信库下载

UDP通信库,采用非阻塞模式(NIO)进行数据收发,主要针对数据量小且发送频繁的场景。

udp丢包分析》

UDP主要丢包原因及具体问题分析 一、主要丢包原因 1、接收端处理时间过长导致丢包:调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失。对于这种情况可以修改接收端,将包接收后存入一个缓冲区,然后迅速返回继续recv。 2、发送的包巨大丢包:虽然send方法会帮你做大包切割成小包发送的事情,但包太大也不行。例如超过50K的一个...

越想越糊涂,做p2p点播与直播是用udp还是tcp

越想越糊涂,做p2p点播与直播是用<em>udp</em>还是tcp

【Android6.0】休眠后网络请求发送失败问题。

最进做一个项目,需要实时定位,并定时将定位信息上传给服务器。 这就要求APP可以后台长运行,这一步已经实现。 但是在测试过程中发现6.0系统在息屏几分钟后,进程依然运行,但是网络请求却失败了,网络连接

android和java用UDP通讯 解决android不能接受后端数据的bug

<em>android</em>和java用UDP通讯 解决<em>android</em>不能接受后端数据的bug 把ip和端口改成自己的就行文件包括<em>android</em> 和 服务端

Android使用Socket(Tcp/Udp)协议进行数据传输(传输大文件)

Socket是什么:所谓Socket 通常也称作”套接字”,用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过”套接字”向网络发出请求或者应答网络请求。Socket内部又有两种协议(Tcp/Udp),我们来说说其各自的特点。先来说说网络编程的三要素1.IP地址:网络中计算机的唯一标识 2.端口 3.协议:通信的规则 Tcp/Udp特点一、 TCP(协议): 建立连接,形成传输数据的通道 在

空指针on a null object reference问题

我遇到的问题是: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.cc.testdemo/com.cc.testdemo.FoodDetailed}: java.lang.NullPointerException: Attempt to invoke virtual method 'void androi

on a null object reference 问题的解决办法

  FATAL EXCEPTION: ……   java.lang.RuntimeException: Unable to start activity ComponentInfo……   ava.lang.NullPointerException: Attempt to invoke virtual method '<em>android</em>……on a null object referen...

将H264码流打成RTP包UDP发送-vlc播放

将H264码流打成RTP包后,不借助第3方库,直接用UDP发送出去,vlc测试播放

TCP的全双工,UDP如何实现交互?

TCP有全双工机制,所以交互式不成问题的。 那么UDP能否实现交互呢???? 是不是可以这样理解,如果应用程序需要交互那么就需要使用TCP,比如http协议。那么网络游戏也有基于UDP的,网游也是交互

Android的Socket是全双工(同时收发数据)的吗?

是否可以同时进行read和write的操作呢? 最近做一个项目发现同时收发会有卡顿,还没有找到原因,希望研究过的朋友指点一下,谢谢!

Android应用源码http、udp、tcp网络交互组件

在github上开源了一个网络交互的<em>android</em>应用,可实现<em>udp</em>消息和tcp消息的发送、接收,以及推送消息的处理。

android中如何使用UDP和TCP传输

首先我们来看一下什么是UDP和TCP。什么是TCP?TCP:Transmission Control Protocol 传输控制协议TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议,由IETF的RFC 793说明(specified)。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分割成适当长度的报文段(通常受

Android 进阶12:进程通信之 Socket (顺便回顾 TCP UDP)

不要害怕困难,这是你进步的机会! 读完本文你将了解: OSI 七层网络模型 TCPIP 四层模型 TCP 协议 TCP 的三次握手 TCP 的四次挥手 UDP 协议 Socket 简介 Socket 的基本操作 使用 TCP 通信的 Socket 流程 使用 UDP 通信的 Socket 流程 使用 TCP 通信的 Socket 实现跨进程聊天 创建服务端 TCPServerService 在客户端

Android收发UDP报文详解 及 优雅解决接收不到问题

前段时间项目组接了一个研究所项目,移动端这边需要做一个UDP接收报文的程序APP,其中还涉及到多页面之间收发报文、动态修改地址、端口号等等。原本编<em>写</em>这个收发程序并不难,步骤也比较固定,在网上找了相关例子进行二次开发,可是发现UDP报文接收不到,这其中还是隐藏着某些坑,仅以此篇文章来总结其奥妙精髓。

udp丢包原因分析及总结

(20<em>udp</em>丢包原因分析及总结 1、调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失。对于这种情况可以修改接收端,将包接收后存入一个缓冲区,然后迅速返回继续recv。 2、发送的包巨大丢包。虽然send方法会帮你做大包切割成小包发送的事情,但包太大也不行。例如超过50K的一个<em>udp</em>包,不切割直接通过send

一步步编一个AndroidStudio_NDK UDPClient 程序

1.配置NDK环境 1. 打开一个项目,从菜单栏中选择 Tools > Android > SDK Manager。 2. 点击 SDK Tools 选项卡。 3. 勾选 LLDB,CMake 和 NDK。 3.点击 Apply,然后点击 OK。 4.当安装完成后,点击 Finish,然后点击 OK。 2.创建一个支持 C/C++ 的新项目 1.在 Con

Android之Socket的基于UDP传输

接收方创建步骤: 1.创建一个DatagramSocket对象,并指定监听的端口号 DatagramSocket socket = newDatagramSocket (4567); 2. 创建一个byte数组用于接收 byte data[] = new byte[1024]; 3. 创建一个空的DatagramPackage对象 DatagramPackage packag...

Android手机系统应用开启httpserver绑定80端口终于实现了~~哈哈哈

问题描述: 我用手机开了个局域网的server,但是一直实现不了绑定80端口。 忙活了好多天,一直在纠结如何使用80端口, 如果是平常的应用没有权限绑定80端口我可以理解,可是当我在系统应用中绑定时竟

求助:安卓8.0里有关udp_socket的权限设置

最近我在调试安卓机顶盒,用的是8.0系统。log里有一个权限问题: type=1400 audit(1513200729.670:23): avc: denied { ioctl } for pid=

基于Android的UDP自动发现(接收与发送)

TCP和UDP的区别: TCP(Transimission Control Protocol)即 传输控制协议:是面向连接的协议, 强调稳定可靠的连接,建立连接“三次握手”,断开连接需要“四次分手”,现常用于网络间视频与语音通话,及相应的网络间可靠的信息流通。 UDP(User Datagram Protocol)即 用户数据报协议:是面向报文的协议,两端无需建立连接即可传输数据,速度和效率都

一款Android平台UDP双向通信源码

本源码是《NIO框架入门(四):Android与MINA2、Netty4的跨平台UDP双向通信实战》文中的代码,详见:http://www.52im.net/thread-388-1-1.html

【工具向】Android UDP与TCP工具类

什么是UDP与TCP协议? 请看此篇文章 http://www.360doc.com/content/14/0325/09/1317564_363500997.shtml   简单来说,他们都是两种协议,UDP传输时候不需要建立连接,TCP需要建立连接,同时UDP使用了数据报形式,而TCP使用流模式来进行传输,可靠性上TCP的可靠性远大于UDP,UDP不能保证数据的正确性,有可能会出现丢包

Android Socket通信(一)--基于UDP协议通信

最近做功能需要用到使用UDP协议和服务器进行通信,之前没有接触这一块,所以花了些时间了解和实现,这里做一下记录和分享。

C# UDP 一对多通信丢包或延时问题

====情境:==== 一台电脑作为主机,向若干台设备轮询(因对每台设备发送的数据不完全一致,不能采用广播的形式),设备收到查询请求后,返回相应的数据给主机。 ====拓扑结构:==== 主机与设备之

TCP与UDP的区别、应用、编码

说到网络基础就不得不提TCP/IP协议,老生常谈的问题之一:TCP与UDP区别? TCP TCP是一种面向有连接的传输层协议。可以保证两端通信主机之间的通信可达。TCP能够正确处理在传输过程中丢包、传输顺序乱掉等异常情况。此外、TCP还能有利用贷款、缓解网络拥堵。然而,为了建立与断开连接,有时需要至少7次的发包收报,导致网络流量浪费。此外,为了提高网络利用率,TCP协议中定义了各种各样的复杂的...

安卓UDP发送问题

public void sent(byte msg){ InetAddress address = null; DatagramPacket packet = null; try { address

Android 使用UDP进行通讯(发送数据和接收数据)

主要用到DatagramSocket和DatagramPacket 类;DatagramSocket使用的UDP连接,客户端不需要先连接数据,可以直接发送给指定服务端。;DatagramPacket 用来发送和接收数据; /** * * */ public class Client2 { private static DatagramSocket client; /** ...

Android实现UDP的简单单方通信

用Android实现UDP通信和Java实现TCP通信,也就是我们所做过的多人聊天类似。现在我们新建一个Java Project,名字为“UDPServer” 来作为服务器端,新建一个Android Application Project来作为客户端,这样我的手机可通过安装app来实现手机和电脑之间的通信。 首先新建一个Android Application Project,作为客户端,我取的名字...

Android UDP通信协议

1、 package com.sunplus.app.dao.impl; public interface IAcceptServerData { public static final String SERVERIP = "255.255.255.255"; // 广播地址 public static final int SERVERPORT = 9600; // 端口号

UDP客户端demo

Android下<em>写</em>的UDP客户端通信demo

UDP传输文件,通过网线直连,低速传输正常,高速传输丢包的问题

用UDP传输视频文件,VC发送数据到安卓端,安卓端监听端口接收数据,采用网线直连,排除网络原因造成的丢包。当VC发送数据延时50ms(大概几百K每秒的速度发包),JAVA端能正确接收。可是不延时50ms发送时(大概2M/S的速度发包)JAVA端接收就出现丢包。JAVA开了两个线程,一个线程接收并放到缓冲队列,另一个线程从缓冲队列取出数据<em>写</em>入U盘。缓冲队列大小也比发送的文件要大,也不可能是缓冲队列不够大的问题。希望得到大神指点,代码如下: void CSend<em>udp</em>Dlg::OnBUTTONSendfile() { SOCKET sockClient=socket(AF_INET,SOCK_DGRAM,0); SOCKADDR_IN addSrv; CString str; CTypeChange myChang; unsigned char xbuf[4096]; int len; m_portdest=8899; m_serverIP="192.168.1.4"; HANDLE hfile; hfile=CreateFile("D:\\amy.mp4", GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); addSrv.sin_addr.S_un.S_addr = inet_addr(m_serverIP); addSrv.sin_family = AF_INET; addSrv.sin_port = htons(m_portdest); DWORD dwstart,dwend,dwrate; DWORD file_len=19025412; int npack=file_len/4063; DWORD ret,lret; int num=0; while(npack--) { memset(&xbuf,0,sizeof(xbuf)); ret=ReadFile(hfile,xbuf,4063,&lret,NULL); if( lret == 0) { SetFilePointer(hfile,0,0,FILE_BEGIN); continue; } xbuf[1]=4077/256; //包头信息 xbuf[2]=4077%256; xbuf[3]=(num/256)/256; xbuf[4]=(num/256)%256; xbuf[7]=num%256; ::Sleep(50); sendto(sockClient,(char*)xbuf,4096,0,(SOCKADDR*)&addSrv,sizeof(SOCKADDR)); num++; } cprintf("end!!!!!!!\n"); closesocket(sockClient); } 安卓端: package com.example.util; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; import java.util.Arrays; import <em>android</em>.os.Environment; import <em>android</em>.util.Log; import com.example.net.Invoker; /** * 封装了数据生产工厂,该工厂中提供了生产和消费方法 * * @author Jry * */ public class Factory { private int read_loc; private int write_loc; private int buffer_len; private int content_len; private int buffers_count; private byte[] buffers; private int[] flags; private File file = null; private String filePath = null; private RandomAccessFile raf = null; private static final String CRLF = "\r\n"; private DatagramSocket datagramSocket = null; private DatagramPacket dataPacket = null; private Object read_lock = new Object(); private Object write_lock = new Object(); private static Factory instance = null; private int last_pos; private int[][] loc_map = null; private Invoker invoker = null; public static Factory newInstance() { if (null == instance) { synchronized (Factory.class) { if (null == instance) { instance = new Factory(); } } } return instance; } private Factory() { initialize(); invoker = Invoker.getInstance(); } private void initialize() { last_pos = 0; read_loc = 0; write_loc = 0; buffer_len = 4096; content_len = 4063; buffers_count = 1024 * 10; flags = new int[buffers_count]; loc_map = new int[4063][256]; buffers = new byte[buffer_len * buffers_count]; Arrays.fill(flags, 0); for (int[] temp : loc_map) { Arrays.fill(temp, 0); } // 设置输出流 filePath = Environment.getExternalStorageDirectory().getPath() + "/video/test.mp4"; file = new File(filePath); if (file.exists()) { Log.i("123", "file has been existed !!!" + CRLF); if (file.delete()) { Log.i("123", "file has benn deleted!!!" + CRLF); } } try { if (file.createNewFile()) { Log.i("123", "成功创建新文件!!!" + CRLF); } } catch (IOException e2) { e2.printStackTrace(); } // 预分配文件所占的磁盘空间,磁盘中会创建一个指定大小的文件 try { raf = new RandomAccessFile(filePath, "rw"); raf.setLength(19025412); // 预分配 19025412 的文件空间 raf.close(); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // 设置socket的监听端口 try { datagramSocket = new DatagramSocket(8899); // datagramSocket.setSoTimeout(10000); Log.i("123", "datagramsocket start successed!!!"); } catch (SocketException e) { Log.i("123", "datagramsocket start failed!!!"); e.printStackTrace(); } } //计数当前总共收到了多少个数据包 private int j = 0; public void create() { while (flags[write_loc] == 1) { synchronized (read_lock) { try { read_lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } byte[] buffer = new byte[buffer_len]; byte[] receiveByte = new byte[buffer_len]; dataPacket = new DatagramPacket(receiveByte, buffer_len); try { datagramSocket.receive(dataPacket); Log.i("123", "收到了数据包 !!!" + " dataPacket.getLength() ==" + dataPacket.getLength()); int len = dataPacket.getLength(); if (len == buffer_len) { buffer = dataPacket.getData(); System.arraycopy(buffer, 0, buffers, write_loc * buffer_len, buffer_len); Log.i("123", "<em>写</em>入缓存数据的长度------" + len + "------" + write_loc + CRLF); Log.i("123", "当前受到包的数据包的数量是------" + (++j) + CRLF); flags[write_loc] = 1; write_loc = (write_loc + 1) % buffers_count; synchronized (read_lock) { read_lock.notifyAll(); } } } catch (IOException e) { e.printStackTrace(); } } public void consume() { while (flags[read_loc] == 1) { try { raf = new RandomAccessFile(filePath, "rw"); int start_loc = buffer_len * read_loc; /* int offset = i*buffer_len; raf.seek(offset); raf.write(buffers, start_loc, buffer_len); Log.i("123", "<em>写</em>入文件数据的长度*****************" + buffer_len +"read_loc == " + read_loc+CRLF); */ int section = (buffers[start_loc + 7] & 0x0FF); int module = (buffers[start_loc + 3] & 0x0FF) * 256 + (buffers[start_loc + 4] & 0x0FF); int len = (buffers[start_loc + 1] & 0x0FF) * 256 + (buffers[start_loc + 2] & 0x0FF); int cur_pos = module * 256 + section; Log.i("123", "module == " + module + ", section == " + section + ", len == " + len + CRLF); if (loc_map[module][section] == 0) { // 补包的代码 // if (!((last_pos + 1) == cur_pos)) { // int gap = cur_pos - last_pos - 1; // for (int i = 0; i < gap; i++) { // Command command = new // ConcreteCommand(UDPSender.getInstance()); // command.setOrderNum(++last_pos); // invoker.addCommand(command); // } // invoker.executeCommand(); // } loc_map[module][section] = 1; // 表示该包号的包已经接收 raf.seek(cur_pos * content_len); raf.write(buffers, start_loc + 13, len - 14); last_pos = cur_pos; Log.i("123", "<em>写</em>入文件数据的长度*****************" + (len - 14) + "*******" + read_loc + CRLF); } flags[read_loc] = 0; read_loc = (read_loc + 1) % buffers_count; synchronized (write_lock) { write_lock.notifyAll(); } } catch (IOException e) { e.printStackTrace(); } finally { try { raf.close(); } catch (IOException e) { e.printStackTrace(); } } } synchronized (read_lock) { try { read_lock.wait(); } catch (InterruptedException e) { e.printStackTrace(); } } } }

UDP丢包原因

UDP丢包原因   一、主要丢包原因   1、接收端处理时间过长导致丢包:调用recv方法接收端收到数据后,处理数据花了一些时间,处理完后再次调用recv方法,在这二次调用间隔里,发过来的包可能丢失。对于这种情况可以修改接收端,将包接收后存入一个缓冲区,然后迅速返回继续recv。   2、发送的包巨大丢包:虽然send方法会帮你做大包切割成小包发送的事情,但包太

局域网UDP通讯丢包

两台电脑,连接在同一个路由器上。 设发送端电脑为A,接收端为B。server运行在A上,两个客户端client1(使用9012端口)和client2(使用9011端口)运行在B上。 A使用9001端口

Android基于UDP的局域网聊天通信(有完整Demo)

开头先直接给出: 完美运行的Demo下载地址:http://www.demodashi.com/demo/12057.html 方便各位急用的同学。 1. 开发环境1.1 开发工具 IDE:AndroidStudio 2.3 语言:java jdk1.8 最低支持:Android4.1以上 1.2 测试环境 实测: 红米4(<em>android</em> 6.0.1) 红米Note5A(androi

Android UDP demo

Android UDP demo send receive

Android TCP demo

Android TCP demo,Android 4.4.4测试通过。需要注意的地方,在AndroidManifest.里加一个访问INTERNET的权限。 TCPActivity.java package com.example.<em>android</em>tcp; import java.io.BufferedReader; import java.io.IOE

UDP实现客户端(Android)和服务器之间通信

UDP通信原理 我们之间学习过TCP通信,TCP是一种可靠的面向连接的通信协议,在发送数据前会通过三次握手建立可靠的连接,在发送数据报的过程中有数据报的重传机制,在结束连接的时候有四次挥手来保证所有的数据可以顺利地发出,然后安全地断开服务器和客户端的连接。而UDP不能保证这些,UDP只需要知道目的地的IP地址和端口号,然后把数据报送的指定的地址,而不关心数据报是否被收到,因此,UDP通信是一种无连...

UDP Server服务器端 Demo

Android Studio 下<em>写</em>的UDP客户端通信demo ,Gradle打包方式

android 实现UDP发送和接收

http://www.51testing.com/html/88/377588-829424.html public class BroadCastUdp extends Thread { private String dataString; DatagramSocket <em>udp</em>Socket; byte[] buffer=null; public BroadCastUdp(

【我的Android进阶之旅】TCP和UDP的优缺点及区别

  TCP的优点: 可靠,稳定 TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。 TCP的缺点: 慢,效率低,占用系统资源高,易被攻击 TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传...

如何用UDP实现全双工通讯?

我创建了两个UDP SOCKET, 绑定在不同的端口,一个供子线程发送封包(SENDTO阻塞型),另一个供主进程接收( recvfrom 阻塞型)接收,经常收不到封包。 求高手给个思路或范例哈,谢谢了

Android Socket通信(四) -- UDP与TCP结合传输数据

系列文章: Android Socket通信(一) – 初识与相遇 Android Socket通信(二) --UDP,单播,广播和多播(组播) Android Socket通信(三) – TCP 配置和传递基础数据 本系列代码链接:https://github.com/LillteZheng/SocketDemo 在前面几章中,我们已经学习了 tcp 和 <em>udp</em> 基础的方法; ...

android Socket UDP通信

<em>android</em> SocketUDP通信,自己<em>写</em>的一个demo,既可以发送,也可以接收并且成功接收后并返回给发送者一个响应表示自己成功接收到了数据,挺好用的,分享给大家,欢迎大家吐槽。需要在Client

Android UDP通信的简单实例和用法归纳,以及与TCP对比、常见问题

UDP的数据发送是按照包来发送的。也就是说,你要先把你的数据包装成一个DatagramPacket,然后发送出去。 相比起TCP,UDP实现起来逻辑更简单(收发方逻辑几乎是相同的),开销也更小,在一般通讯时,主要利用UDP来发送消息是个不错的选择;不过我们还需要一点辅助手段来处理UDP丢包的问题。

Android中UDP通信

个人也同意网上的一些观点,Android开发中尽量不使用UDP进行数据通信。 个人观点:1,UDP不能保证数据传输。2,有的手机不能接收UDP数据包。3,个人觉得用HTTP协议更方便,也更能保证数据传输。 不过有的项目,肯定还是要用到UDP协议,在目前项目中用到了UDP,就简单做个总结。代码还需要优化。 UDP工具类: public class UdpMessageTool { privat

android上socket通讯丢包问题之完美解决方案

socket通讯丢包问题是<em>android</em>上通过底层通讯常见的问题,本代码通过NIO实现非阻塞的通讯,避免丢包的问题

PC与Android的基于UDP的网络通信

文章目录 展示一下效果图: 1.创建一个Android的工程,再创建一个java的工程 2.设计手机App通信的样式fragment_main.xml 3.设计PC端通信的样式 最最最重要!!! 不论是你打算实现PC和手机的基本通信还是你在遇到bug的时候看到我这篇文章,都要注意我下面说的,真的是十分坑爹 1.首先在Android项目中加入连接网络的权限,Manifest.xml文件中添加 ...

android的UDP编程实例

一、有的手机不能直接接收UDP包,可能是手机厂商在定制Rom的时候把这个功能给关掉了。 1、可先在oncreate()方法里面实例化一个WifiManager.MulticastLock 对象lock;具体如下: 复制代码代码如下: WifiManager manager = (WifiManager) this                 .getSystemServ

android h264数据发送接收

小弟最近在做视屏聊天功能,现在遇到的问题是取到了h264数据但是不能加声音,准备用<em>udp</em>将数据发送但是没有思路,求大神指教

udp丢包问题的调查

项目用海思做的编解码卡,发送接收rtp/<em>udp</em>流,有两个bug,一直解决不了,都是和丢包相关的 第一个现象是编码卡A和解码卡B搭配使用的时候,log显示丢包,现在已知的情报有: 1、测试的环境是A和B

Android实现TCP与UDP传输

关于TCP和UDP协议的描述,可参考http://zhoujianghai.iteye.com/blog/1052970   下面是<em>android</em>与PC端使用TCP和UDP协议通信的例子: 以PC端作为服务器,<em>android</em>端使用TCP协议与服务器建立连接,使用UDP协议接受和发送数据。 服务器端代码: ThunderServer.java   Java代码   p

【Android Socket专题】: UDP通信服务器端app的demo的实现

Android Socket 专题: UDP Client客户端 http://blog.csdn.net/shankezh/article/details/50731287 UDP Server服务器http://blog.csdn.net/shankezh/article/details/51452811 TCP Client客户端 http://blog.csdn.net/...

在 Android 上,一个完整的 UDP 通信模块应该是怎样的?

在 Android 上,一个完整的 UDP 通信模块应该是怎样的?本文例子的所有代码在这里:github 连接在这里 UDPSocketDemo<em>写</em>在前面: 在上周<em>写</em>了一篇关于 TCP 和 UDP 概念区别对比的文章:TCP与UDP差异对比分析在这篇文章中,在可靠性、数据发送、适用场景等多个方面分析了二者的区别。而本文的目的是想给大家介绍下在 Android 设备上,一个手机通过热点连接另一个手机。

Socket 通信原理(Android客户端和服务器以TCP&&UDP方式互通)

ZERO、前言 有关通信原理内容是在网上或百科整理得到,代码部分为本人所<em>写</em>,如果不当,还望指教。 一、Socket通信简介  Android与服务器的通信方式主要有两种,一是Http通信,一是Socket通信。两者的最大差异在于,http连接使用的是“请求—响应方式”,即在请求时建立连接通道,当客户端向服务器发送请求后,服务器端才能向客户端返回数据。而Socket通信则是在双

android udp通讯

<em>android</em> eclipse <em>udp</em>通讯 实例 主线程不可以有网络通讯

TCPUDPDbg(TCP UDP 网络调试工具)

TCPUDPDbg(TCP UDP 网络调试工具) 可以用于接收网络传输数据的扫码枪数据等

在中国程序员是青春饭吗?

今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...

EXT资料大全,ext,api下载

包含ext完整的开发包。API文档,入门资料 相关下载链接:[url=//download.csdn.net/download/caiyingying234/3329439?utm_source=bbsseo]//download.csdn.net/download/caiyingying234/3329439?utm_source=bbsseo[/url]

jquery商品图片循坏旋转代码下载

jquery商品图片循坏旋转代码,供大家一起参考学习。 相关下载链接:[url=//download.csdn.net/download/zhenjinsuo/4934030?utm_source=bbsseo]//download.csdn.net/download/zhenjinsuo/4934030?utm_source=bbsseo[/url]

小游戏制作 I wanna touch the cloud.exe下载

用gamemaker做的一个i wanna小游戏,十分不成熟(),有兴趣的可以下载玩玩看, 相关下载链接:[url=//download.csdn.net/download/jera_c/10347470?utm_source=bbsseo]//download.csdn.net/download/jera_c/10347470?utm_source=bbsseo[/url]

我们是很有底线的