android发送udp,tcp消息
发送方创建步骤:
1. 创建一个DatagramSocket对象
DatagramSocket socket = new DatagramSocket (4567);
2. 创建一个 InetAddress , 相当于是地址
InetAddress serverAddress = InetAddress.getByName("想要发送到的那个IP地址");
3. 这是随意发送一个数据
String str = "hello";
4. 转为byte类型
byte data[] = str.getBytes();
5. 创建一个DatagramPacket 对象,并指定要讲这个数据包发送到网络当中的哪个地址,以及端口号
DatagramPacket package = new DatagramPacket (data , data.length , serverAddress , 4567);
6. 调用DatagramSocket对象的send方法 发送数据
socket . send(package);
udp的辅助工具类:
这在自己项目中主要用来发送频道号码,如果是1...9自然发送一次即可,如果是多余1位的,就依次发送。
package com.wotlab.home.moneyplantairs.utils; import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
/**
* 为红外适配器发送指令的助手类
* @author lx
*
*/
public class UDPHelper {
private static DatagramSocket s = null;
private static InetAddress local; public static void sendSingle(int message, String ip) {
int server_port = Constants.SOCKET_PORT;
if (s == null) {
try {
s = new DatagramSocket();
} catch (SocketException e) {
e.printStackTrace();
}
try {
// 换成服务器端IP,ip为想要发送到的那个ip地址
local = InetAddress.getByName(ip);
} catch (UnknownHostException e) {
e.printStackTrace();
}
}
String send = "###\r\n" + message + " \r\n###";
DatagramPacket p = new DatagramPacket(send.getBytes(), send.length(),
local, server_port);
try {
s.send(p);
} catch (IOException e) {
e.printStackTrace();
}
} public static void sendChannel(int channelID, String ip) {
char[] strChannel = (channelID + "").toCharArray();
for (int i = 0; i < strChannel.length; i++) { switch (Integer.parseInt(strChannel[i] + "")) {
case 0:
sendSingle(0x11, ip);
break;
case 1:
sendSingle(0x28, ip);
break;
case 2:
sendSingle(0x18, ip);
break;
case 3:
sendSingle(0x08, ip);
break;
case 4:
sendSingle(0x22, ip);
break;
case 5:
sendSingle(0x12, ip);
break;
case 6:
sendSingle(0x02, ip);
break;
case 7:
sendSingle(0x29, ip);
break;
case 8:
sendSingle(0x19, ip);
break;
case 9:
sendSingle(0x09, ip);
break;
} if (i + 1 != strChannel.length) {
try {
Thread.sleep(1000);
} catch (Exception e) {
}
}
}
} }
udp辅助工具类
发送tcp的操作
package com.wotlab.home.moneyplantairs.utils; import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.SocketAddress; /**
* Socket的助手类,用于通过TCP协议发送数据
*
* @author lx
*
*/
public class SocketHelper {
private Socket s = null;
BufferedReader input = null;
PrintWriter output = null; public SocketHelper() {
} public void connect(String ip, int port) throws Exception {
s = new Socket();
SocketAddress socAddress = new InetSocketAddress(ip, port);
// SocketAddress socAddress = new InetSocketAddress("192.168.1.105",
// port);
s.connect(socAddress, Constants.SOCKET_TIMEOUT);
s.setSoTimeout(Constants.SOCKET_LINK_TIMEOUT);
} public void close() throws Exception {
output.close();
input.close();
s.close();
} public String sendTCP(String str) {
String receive = "";
try {
if (s == null) {
throw new Exception("");
}
output = new PrintWriter(s.getOutputStream());
output.print(str);
output.flush();
input = new BufferedReader(
new InputStreamReader(s.getInputStream()));
receive = input.readLine();
} catch (Exception e) {
e.printStackTrace();
}
return receive;
}
}
发送tcp消息
android发送udp,tcp消息的更多相关文章
- android 发送UDP广播,搜寻server建立socket链接
应用场景:client(手机.pc)须要搜寻所在局域网内的server并获得server地址. 方法简单介绍:client发送UDP广播,服务收到广播后得到clientip地址,然后向client发送 ...
- NetworkComms V3 之发送UDP广播消息
NetworkComms网络通信框架序言 NetworkComms通信框架,是一款来自英国的c#语言编写的通信框架,历时6年研发,成熟稳定,性能可靠. NetworkComms v3目前只支持基本的U ...
- UDP TCP 消息边界
先明确一个问题,如果定义了一个数据结构,大小是,比方说 32 个字节,然后 UDP 客户端连续向服务端发了两个包.现在假设这两个包都已经到达了服务器,那么服务端调用 recvfrom 来接收数据,并且 ...
- 高效的TCP消息发送组件
目前的.net 架构下缺乏高效的TCP消息发送组件,而这种组件是构建高性能分布式应用所必需的.为此我结合多年的底层开发经验开发了一个.net 下的高效TCP消息发送组件.这个组件在异步发送时可以达到每 ...
- NTCPMSG 开源高性能TCP消息发送组件
https://www.cnblogs.com/eaglet/archive/2013/01/07/2849010.html 目前的.net 架构下缺乏高效的TCP消息发送组件,而这种组件是构建高性能 ...
- (unix domain socket)使用udp发送>=128K的消息会报ENOBUFS的错误
一个困扰我两天的问题, Google和Baidu没有找到解决方法! 此文为记录这个问题,并给出原因和解决方法. 1.Unix domain socket简介 unix域协议并不是一个实际的协议族,而是 ...
- Android 手机卫士--解析json与消息机制发送不同类型消息
本文地址:http://www.cnblogs.com/wuyudong/p/5900800.html,转载请注明源地址. 1.解析json数据 解析json的代码很简单 JSONObject jso ...
- Android 基于Netty的消息推送方案之字符串的接收和发送(三)
在上一篇文章中<Android 基于Netty的消息推送方案之概念和工作原理(二)> ,我们介绍过一些关于Netty的概念和工作原理的内容,今天我们先来介绍一个叫做ChannelBuffe ...
- Udp实现消息的发送和接收、以及图片的上传
//Udp实现消息的发送和接收 import java.io.IOException; import java.net.DatagramPacket; import java.net.Datagram ...
随机推荐
- java版微信支付/查询/撤销
最近公司接入微信刷卡支付,网上根本没见到很直接的教程(可能眼拙),一直摸滚打爬,加班加点才走通,忍不了必须写一写 微信 刷卡支付/查询/撤销... 必须要有公众号然后去申请,申请自己去看文档,这里主要 ...
- 蚁群算法解决TSP问题
代码实现 运行结果及参数展示 alpha=1beta=5 rho=0.1 alpha=1beta=1rho=0.1 alpha=0.5beta=1rho=0.1 概念蚁群算法(AG)是一种模拟蚂蚁觅 ...
- [19/09/16-星期一] Python的运算符和条件判断语句
一.运算符 (1)算术运算符 + 加法运算符(如果是两个字符串之间进行加法运算,则会进行拼串操作) a = 10 + 5 计算 a = 'hello' + ' ' + 'world' 拼串 - ...
- 不能将X*类型的值分配到X*类型的实体问题的解决方法
今天在学习链表的过程中遇到了这个问题,我用如下方法定义了一个结构体,然后这个函数想要在链表头插入一个节点.但是在函数的最后一行却出现了报错:不能将MyLinkedList * 类型的值分配到MyLin ...
- 使用autotools自动生成Makefile并在此之上使用dh-make生成可发布的deb程序包(详解)
转自:http://blog.csdn.net/longerzone/article/details/12705507 一.前言 本文将介绍如何使用autotools生成一个Makefile文件,并在 ...
- mybatis oracle 批量新增
假定场景:批量导入用户信息 一般批量新增使用 SELECT … INSERT INTO 和 INSERT INTO … SELECT 我们这次使用第二种 一.先建一张用户信息表模拟批量导入用户信息 c ...
- HNUSTOJ-1565 Vampire Numbers(暴力打表)
1565: Vampire Numbers 时间限制: 3 Sec 内存限制: 128 MB提交: 20 解决: 9[提交][状态][讨论版] 题目描述 The number 1827 is an ...
- Redis主从架构核心原理
Redis-Cluster工作原理: redis集群内置了16384个哈希槽,当需要在 Redis 集群中放置一个 key-value 时,redis 先对 key 使用 crc16 算法算出一个结果 ...
- MySQL---数据库切分
3.切分 水平切分 水平切分又称为sharding,它是将同一个表的记录拆分到多个结构相同的表中.当一个表的数据不断的增加的时候,sharding是必然的选择,它可以将数据分布到集群的不同节点上, ...
- mongodb连接警告修复
问题 Node.js中mongoose模块连接MongoDB数据库时提示(node:12580) DeprecationWarning: current URL string parser is de ...