- 浏览: 186561 次
- 性别:
- 来自: 成都
-
文章分类
最新评论
-
donggongai:
Blackbaby 写道mazhi4562qq 写道moist ...
openfire集成现有系统的用户表 -
Blackbaby:
mazhi4562qq 写道moistrot 写道哥们,你集成 ...
openfire集成现有系统的用户表 -
mazhi4562qq:
moistrot 写道哥们,你集成成功了吗?我这样集成之后,登 ...
openfire集成现有系统的用户表 -
dxcsingle:
哥们 我如今也遇到这个问题 能讲哈怎么处理么?
openfire集成现有系统的用户表 -
hooktoo:
该例子有很严重的问题,java没释放内存
JNative dll回调函数使用实例
import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import java.net.ServerSocket; import java.util.ArrayList; import java.util.List; import javax.media.MediaLocator; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; import org.jivesoftware.smack.XMPPConnection; import org.jivesoftware.smack.XMPPException; import org.jivesoftware.smackx.jingle.IncomingJingleSession; import org.jivesoftware.smackx.jingle.JingleManager; import org.jivesoftware.smackx.jingle.JingleSession; import org.jivesoftware.smackx.jingle.JingleSessionRequest; import org.jivesoftware.smackx.jingle.OutgoingJingleSession; import org.jivesoftware.smackx.jingle.listeners.JingleSessionRequestListener; import org.jivesoftware.smackx.jingle.listeners.JingleTransportListener; import org.jivesoftware.smackx.jingle.media.JingleMediaManager; import org.jivesoftware.smackx.jingle.media.JingleMediaSession; import org.jivesoftware.smackx.jingle.media.PayloadType; import org.jivesoftware.smackx.jingle.mediaimpl.jmf.AudioChannel; import org.jivesoftware.smackx.jingle.mediaimpl.jmf.AudioFormatUtils; import org.jivesoftware.smackx.jingle.nat.ICETransportManager; import org.jivesoftware.smackx.jingle.nat.TransportCandidate; public class JingleAllTheWay extends JPanel { private static final long serialVersionUID = 1L; private static XMPPConnection xmppConnection; private static final String server = "******"; private static String jid = "155******0097@******/spark"; private static JingleManager jm = null; private static IncomingJingleSession incoming = null; private static OutgoingJingleSession outgoing = null; private static JButton admin, call, hangup; // just a simple frame public static void main(String[] args) { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(new Dimension(300, 100)); frame.setLocation(new Point(100, 100)); frame.setTitle("Jingle All The Way"); frame.getContentPane().add(new JingleAllTheWay(), BorderLayout.CENTER); frame.setVisible(true); } public JingleAllTheWay() { // button to log in as sue and set up to call bob admin = new JButton("155******97"); admin.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { login("1552******097", "8525330"); jid = "1366******872@******/spark"; } }); add(admin); // // button to login as bob and set up to call sue // seven = new JButton("seven"); // seven.addActionListener(new ActionListener(){ // public void actionPerformed(ActionEvent e) // { // login("155******097", "1"); // jid="admin@******/Smack"; // } // }); // add(seven); // button to call other person call = new JButton("Call to 136******872"); call.setEnabled(false); call.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (outgoing != null) return; try { System.out.print("被叫JID" + jid); outgoing = jm.createOutgoingJingleSession(jid); outgoing.addTransportListener(new TransportManager()); outgoing.start(); } catch (XMPPException e1) { e1.printStackTrace(); } } }); add(call); // button to hangup the call hangup = new JButton("Hangup"); hangup.setEnabled(false); hangup.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if (outgoing != null) { try { outgoing.terminate(); } catch (XMPPException e1) { e1.printStackTrace(); } } if (incoming != null) { try { incoming.terminate(); } catch (XMPPException e1) { e1.printStackTrace(); } } } }); add(hangup); } // login to the server and enable/disable buttons public void login(String username, String password) { // XMPPConnection.DEBUG_ENABLED = true; xmppConnection = new XMPPConnection(server); try { xmppConnection.connect(); xmppConnection.login(username, password); ICETransportManager icetm0 = new ICETransportManager(xmppConnection, "jivesoftware.com", 3478); jm = new JingleManager(xmppConnection, icetm0, new JmfMediaManager()); jm.addCreationListener(icetm0); jm.addJingleSessionRequestListener(new JingleSessionRequestListener() { public void sessionRequested(JingleSessionRequest request) { if (incoming != null) { System.out.println("incoming open"); return; } try { // Accept the call incoming = request.accept(); incoming.addTransportListener(new TransportManager()); // Start the call incoming.start(); } catch (XMPPException e) { e.printStackTrace(); } } }); // make the logins unlogginable and allow user to place a call call.setEnabled(true); admin.setEnabled(false); // seven.setEnabled(false); } catch (XMPPException e) { e.printStackTrace(); } } // handle the jingle calls being connected and disconnected // disabling/enabling buttons private static class TransportManager implements JingleTransportListener { public void transportClosed(TransportCandidate cand) { System.out.println("session closed"); hangup.setEnabled(false); call.setEnabled(true); incoming = null; outgoing = null; } public void transportClosedOnError(XMPPException e) { System.out.println("session closed on error"); hangup.setEnabled(false); call.setEnabled(true); incoming = null; outgoing = null; } public void transportEstablished(TransportCandidate local, TransportCandidate remote) { System.out.println("session created"); hangup.setEnabled(true); call.setEnabled(false); } } // class that returns an instance of another class public static class JmfMediaManager extends JingleMediaManager { private static List<PayloadType> payloads = new ArrayList<PayloadType>(); static { payloads.add(new PayloadType.Audio(0, "PCMU", 16000)); payloads.add(new PayloadType.Audio(3, "gsm")); payloads.add(new PayloadType.Audio(4, "g723")); } @Override public JingleMediaSession createMediaSession(PayloadType payloadType, TransportCandidate remote, TransportCandidate local, JingleSession jingleSession) { return new MediaSession(payloadType, remote, local, null, jingleSession); } @Override public List<PayloadType> getPayloads() { return payloads; } } // not quite sure what this does public static class MediaSession extends JingleMediaSession { private AudioChannel audioChannel; public MediaSession(final PayloadType payloadType, final TransportCandidate remote, final TransportCandidate local, String locator, JingleSession jingleSession) { super(payloadType, remote, local, locator == null ? "dsound://" : locator, jingleSession); initialize(); } @Override public void initialize() { String ip; String localIp; int localPort; int remotePort; if (this.getLocal().getSymmetric() != null) { ip = this.getLocal().getIp(); localIp = this.getLocal().getLocalIp(); localPort = getFreePort(); remotePort = this.getLocal().getSymmetric().getPort(); System.out.println("Initialising: " + this.getLocal().getConnection() + " " + ip + ": " + localPort + "->" + remotePort); } else { ip = this.getRemote().getIp(); localIp = this.getLocal().getLocalIp(); localPort = this.getLocal().getPort(); remotePort = this.getRemote().getPort(); } audioChannel = new AudioChannel(new MediaLocator(this.getMediaLocator()), localIp, ip, localPort, remotePort, AudioFormatUtils.getAudioFormat(this.getPayloadType()), this); } @Override public void setTrasmit(boolean active) { audioChannel.setTrasmit(active); } @Override public void startReceive() { // if this is empty will i not receive audio? } @Override public void startTrasmit() { audioChannel.start(); } @Override public void stopReceive() { } @Override public void stopTrasmit() { if (audioChannel != null) audioChannel.stop(); } protected int getFreePort() { ServerSocket ss; int freePort = 0; for (int i = 0; i < 10; i++) { freePort = (int) (10000 + Math.round(Math.random() * 10000)); freePort = freePort % 2 == 0 ? freePort : freePort + 1; try { ss = new ServerSocket(freePort); freePort = ss.getLocalPort(); ss.close(); return freePort; } catch (IOException e) { e.printStackTrace(); } } try { ss = new ServerSocket(0); freePort = ss.getLocalPort(); ss.close(); } catch (IOException e) { e.printStackTrace(); } return freePort; } } } 参考:http://www.igniterealtime.org/community/message/185575#185575
评论
3 楼
xumiao19871129
2011-10-28
出现异常:
java.net.BindException: Cannot assign requested address: Cannot bind
at java.net.PlainDatagramSocketImpl.bind0(Native Method)
at java.net.PlainDatagramSocketImpl.bind(PlainDatagramSocketImpl.java:91)
at java.net.DatagramSocket.bind(DatagramSocket.java:372)
at java.net.DatagramSocket.<init>(DatagramSocket.java:211)
at java.net.DatagramSocket.<init>(DatagramSocket.java:262)
at de.javawi.jstun.test.demo.ice.Candidate.<init>(Candidate.java:35)
at de.javawi.jstun.test.demo.ice.ICENegociator.testInterface(ICENegociator.java:122)
at de.javawi.jstun.test.demo.ice.ICENegociator.access$000(ICENegociator.java:40)
at de.javawi.jstun.test.demo.ice.ICENegociator$1.run(ICENegociator.java:88)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
java.net.BindException: Cannot assign requested address: Cannot bind
at java.net.PlainDatagramSocketImpl.bind0(Native Method)
at java.net.PlainDatagramSocketImpl.bind(PlainDatagramSocketImpl.java:91)
at java.net.DatagramSocket.bind(DatagramSocket.java:372)
at java.net.DatagramSocket.<init>(DatagramSocket.java:211)
at java.net.DatagramSocket.<init>(DatagramSocket.java:262)
at de.javawi.jstun.test.demo.ice.Candidate.<init>(Candidate.java:35)
at de.javawi.jstun.test.demo.ice.ICENegociator.testInterface(ICENegociator.java:122)
at de.javawi.jstun.test.demo.ice.ICENegociator.access$000(ICENegociator.java:40)
at de.javawi.jstun.test.demo.ice.ICENegociator$1.run(ICENegociator.java:88)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
2 楼
Blackbaby
2011-02-10
185575
啊,我的这个例子是我当时参考igniterealtime论坛上完成的,是可以跑,你换成你的登陆id,然后和spark连下看看,相关资讯最好是在igniterealtime论坛上找啦
tocute 写道
不好意思請教一下
請問有沒有 有關於 smack Jingle 相關的範例呢
目前只有看到 JingleAllTheWay.java
可能是 ice 的問題
所以我一直沒有辦法跟 Gtalk 互聯
想問有沒有相關的資訊可以參考呢??
謝謝你
請問有沒有 有關於 smack Jingle 相關的範例呢
目前只有看到 JingleAllTheWay.java
可能是 ice 的問題
所以我一直沒有辦法跟 Gtalk 互聯
想問有沒有相關的資訊可以參考呢??
謝謝你
啊,我的这个例子是我当时参考igniterealtime论坛上完成的,是可以跑,你换成你的登陆id,然后和spark连下看看,相关资讯最好是在igniterealtime论坛上找啦
1 楼
tocute
2011-01-24
不好意思請教一下
請問有沒有 有關於 smack Jingle 相關的範例呢
目前只有看到 JingleAllTheWay.java
可能是 ice 的問題
所以我一直沒有辦法跟 Gtalk 互聯
想問有沒有相關的資訊可以參考呢??
謝謝你
請問有沒有 有關於 smack Jingle 相關的範例呢
目前只有看到 JingleAllTheWay.java
可能是 ice 的問題
所以我一直沒有辦法跟 Gtalk 互聯
想問有沒有相關的資訊可以參考呢??
謝謝你
发表评论
-
How to reset admin password in openfire
2010-05-04 09:35 1383如果你用过 Openfire的User Impo ... -
openfire集成现有系统的用户表
2010-04-09 09:34 3772openfire 3.6.4版本集成现有系统用户表: ins ... -
注册of为window服务
2009-08-13 16:40 894openfire-service /install -- 安装 ... -
smack presence问题
2009-07-22 17:29 2265Roser#getPresence(String user) ... -
openfire插件开发
2009-07-22 15:05 1068http://www.igniterealtime.or ... -
openfire资源
2009-06-29 15:30 1629http://sourceforge.net/projects ... -
Component vs IQHandler
2009-06-27 12:41 1657When creating a component you a ...
相关推荐
Android中常用的XMPP库有Smack和XMPPTCPConnection。这些库提供API来创建连接、发送接收消息、管理用户会话等。在DEMO中,可能已经集成了其中一个库,并提供了相关的配置和使用示例。 **4. 连接服务器** 在Android...
开发者需要学习如何使用XMPP库(如Smack或Strophe.js)来实现这些功能,并且可能需要对UI进行定制以达到微信的用户体验。 4. **语音通话实现**:即时通讯中的语音通话通常需要额外的技术支持,如ICE(Interactive ...
基于的手势识别系统可控制灯的亮_3
untitled2.zip
S7-1500和分布式外围系统ET200MP模块数据
anaconda配置pytorch环境
高校教室管理系统,主要的模块包括查看首页、个人中心、教师管理、学生管理、教室信息管理、教师申请管理、学生申请管理、课时表管理、教师取消预约管理、学生取消预约管理等功能。
半挂汽车列车横向稳定性控制研究:基于模糊PID与制动力矩分配的联合仿真分析在典型工况下的表现,半挂汽车列车在典型工况下的横向稳定性控制研究:基于模糊PID与制动力矩分配的联合仿真分析,半挂汽车列车4自由度6轴整车model,横向稳定性控制,在低附着系数路面,进行典型3个工况,角阶跃,双移线,方向盘转角。 采用算法:模糊PID,制动力矩分配,最优滑移率滑膜控制。 以上基于trucksim和simulink联合仿真,有对应 p-a-p-e-r参考 ,关键词: 1. 半挂汽车列车 2. 4自由度6轴整车model 3. 横向稳定性控制 4. 低附着系数路面 5. 典型工况(角阶跃、双移线、方向盘转角) 6. 模糊PID算法 7. 制动力矩分配 8. 最优滑移率滑膜控制 9. Trucksim和Simulink联合仿真 10. P-A-P-E-R参考; 用分号隔开上述关键词为:半挂汽车列车; 4自由度6轴整车model; 横向稳定性控制; 低附着系数路面; 典型工况; 模糊PID算法; 制动力矩分配; 最优滑移率滑膜控制; Trucksim和Simulink联合仿真; P-A-P-E-R参考
路径规划人工势场法及其改进算法Matlab代码实现,路径规划人工势场法及其改进算法Matlab代码实现,路径规划人工势场法以及改进人工势场法matlab代码,包含了 ,路径规划; 人工势场法; 改进人工势场法; MATLAB代码; 分隔词“;”。,基于Matlab的改进人工势场法路径规划算法研究
本文介绍了范德堡大学深脑刺激器(DBS)项目,该项目旨在开发和临床评估一个系统,以辅助从规划到编程的整个过程。DBS是一种高频刺激治疗,用于治疗运动障碍,如帕金森病。由于目标区域在现有成像技术中可见性差,因此DBS电极的植入和编程过程复杂且耗时。项目涉及使用计算机辅助手术技术,以及一个定制的微定位平台(StarFix),该平台允许在术前进行图像采集和目标规划,提高了手术的精确性和效率。此外,文章还讨论了系统架构和各个模块的功能,以及如何通过中央数据库和网络接口实现信息共享。
三菱FX3U步进电机FB块的应用:模块化程序实现电机换算,提高稳定性和移植性,三菱FX3U步进电机换算FB块:模块化编程实现电机控制的高效性与稳定性提升,三菱FX3U 步进电机算FB块 FB块的使用可以使程序模块化简单化,进而提高了程序的稳定性和可移植性。 此例中使用FB块,可以实现步进电机的算,已知距离求得脉冲数,已知速度可以求得频率。 程序中包含有FB和ST内容;移植方便,在其他程序中可以直接添加已写好的FB块。 ,三菱FX3U;步进电机换算;FB块;程序模块化;稳定性;可移植性;距离与脉冲数换算;速度与频率换算;FB和ST内容;移植方便。,三菱FX3U步进电机换算FB块:程序模块化与高稳定性实现
光伏逆变器TMS320F28335设计方案:Boost升压与单相全桥逆变,PWM与SPWM控制,MPPT恒压跟踪法实现,基于TMS320F28335DSP的光伏逆变器设计方案:Boost升压与单相全桥逆变电路实现及MPPT技术解析,光伏逆变器设计方案TMS320F28335-176资料 PCB 原理图 源代码 1. 本设计DC-DC采用Boost升压,DCAC采用单相全桥逆变电路结构。 2. 以TI公司的浮点数字信号控制器TMS320F28335DSP为控制电路核心,采用规则采样法和DSP片内ePWM模块功能实现PWM和SPWM波。 3. PV最大功率点跟踪(MPPT)采用了恒压跟踪法(CVT法)来实现,并用软件锁相环进行系统的同频、同相控制,控制灵活简单。 4.资料包含: 原理图,PCB(Protel或者AD打开),源程序代码(CCS打开),BOM清单,参考资料 ,核心关键词:TMS320F28335-176; 光伏逆变器; 升压; 逆变电路; 数字信号控制器; 规则采样法; ePWM模块; PWM; SPWM波; MPPT; 恒压跟踪法; 原理图; PCB; 源程序代码; BOM
centos9内核安装包
昆仑通态触摸屏与两台台达VFD-M变频器通讯实现:频率设定、启停控制与状态指示功能接线及设置说明,昆仑通态TPC7062KD触摸屏与两台台达VFD-M变频器通讯程序:实现频率设定、启停控制与状态指示,昆仑通态MCGS与2台台达VFD-M变频器通讯程序实现昆仑通态触摸屏与2台台达VFD-M变频器通讯,程序稳定可靠 器件:昆仑通态TPC7062KD触摸屏,2台台达VFD-M变频器,附送接线说明和设置说明 功能:实现频率设定,启停控制,实际频率读取等,状态指示 ,昆仑通态MCGS; 台达VFD-M变频器; 通讯程序; 稳定可靠; 频率设定; 启停控制; 实际频率读取; 状态指示; 接线说明; 设置说明,昆仑通态MCGS与台达VFD-M变频器通讯程序:稳定可靠,双机控制全实现
研控步进电机驱动器方案验证通过,核心技术成熟可生产,咨询优惠价格!硬件原理图与PCB源代码全包括。,研控步进电机驱动器方案验证通过,核心技术掌握,生产准备,咨询实际价格,包含硬件原理图及PCB源代码。,研控步进电机驱动器方案 验证可用,可以生产,欢迎咨询实际价格,快速掌握核心技术。 包括硬件原理图 PCB源代码 ,研控步进电机驱动器方案; 验证可用; 可生产; 核心技术; 硬件原理图; PCB源代码,研控步进电机驱动器方案验证通过,现可生产供应,快速掌握核心技术,附硬件原理图及PCB源代码。
高质量的OPCClient_UA源码分享:基于C#的OPC客户端开发源码集(测试稳定、多行业应用实例、VS编辑器支持),高质量OPC客户端源码解析:OPCClient_UA C#开发,适用于VS2019及多行业现场应用源码分享,OPCClient_UA源码OPC客户端源码(c#开发) 另外有opcserver,opcclient的da,ua版本的见其他链接。 本项目为VS2019开发,可用VS其他版本的编辑器打开项目。 已应用到多个行业的几百个应用现场,长时间运行稳定,可靠。 本项目中提供测试OPCClient的软件开发源码,有详细的注释,二次开发清晰明了。 ,OPCClient_UA; OPC客户端源码; C#开发; VS2019项目; 稳定可靠; 详细注释; 二次开发,OPC客户端源码:稳定可靠的C#开发实现,含详细注释支持二次开发
毕业设计
三菱FX3U六轴标准程序:六轴控制特色及转盘多工位流水作业功能实现,三菱FX3U六轴标准程序:实现3轴本体控制与3个1PG定位模块,轴点动控制、回零控制及定位功能,结合气缸与DD马达控制转盘的多工位流水作业模式,三菱FX3U六轴标准程序,程序包含本体3轴控制,扩展3个1PG定位模块,一共六轴。 程序有轴点动控制,回零控制,相对定位,绝对定位。 另有气缸数个,一个大是DD马达控制的转盘,整个是转盘多工位流水作业方式 ,三菱FX3U;六轴控制;轴点动控制;回零控制;定位模块;DD马达转盘;流水作业方式,三菱FX3U六轴程序控制:转盘流水作业的机械多轴系统
在 GEE(Google Earth Engine)中,XEE 包是一个用于处理和分析地理空间数据的工具。以下是对 GEE 中 XEE 包的具体介绍: 主要特性 地理数据处理:提供强大的函数和工具,用于处理遥感影像和其他地理空间数据。 高效计算:利用云计算能力,支持大规模数据集的快速处理。 可视化:内置可视化工具,方便用户查看和分析数据。 集成性:可以与其他 GEE API 和工具无缝集成,支持多种数据源。 适用场景 环境监测:用于监测森林砍伐、城市扩展、水体变化等环境问题。 农业分析:分析作物生长、土地利用变化等农业相关数据。 气候研究:研究气候变化对生态系统和人类活动的影响。