导航:首页 > 编程语言 > androidtcp编程

androidtcp编程

发布时间:2023-07-31 09:43:19

㈠ 安卓串口转tcp

安卓串口转tcp是将设备串口数据传到网络服务器中,除了用DTU之外,还可以使用“MX虚拟串口”工具软件,安装在电脑或控制器中,简单两步配置即可实现。
1、下载安装“MX虚拟串口”到官网下载www.meixuannet.cn。
2、创建“串口TCP客户端”,实现串口转tcp网络,写入串口的数据会发给远程tcp服务器,方便实现远程串口应用。

㈡ 求一个android studio 的 tcpip 客户端收发的实例,希望大侠们能给一下源码工程

java">
最基础的写法


server端
publicclassMyTcpServer{
publicstaticvoidmian(String[]args){
try{
//构造一个服务器端端口为12345的socket服务器;
ServerSocketserverSocket=newServerSocket(12345);
//等待接收一个socket客户端的连接,并得到客户端的socket对象。
//此方法在没有客户端连接的时候,会阻塞。
Socketclient=serverSocket.accept();
//获得socket客户端的输入管道
InputStreamis=client.getInputStream();
//获得socket客户端的输出管道
OutputStreamos=client.getOutputStream();
byte[]buffer=newbyte[1024];
intlen=is.read(buffer);
System.out.println("-->"+newString(buffer));

os.write("Helloclient".getBytes());
os.flush();
is.close();
os.close();
client.close();
serverSocket.close();
}catch(IOExceptione){
e.printStackTrace();
}
}

}
client端
{
@Override
publicvoidrun(){
super.run();
try{
Socketclient=newSocket("192.168.3.173",12345);//IP为服务器IP,端口号为服务器端口号。
InputStreamin=client.getInputStream();
OutputStreamout=client.getOutputStream();

out.write("Helloserver".getBytes());//如果在服务器端先进行读操作。那么客户端就应先进行写操作。
//这样交替进行,不然将都阻塞在Read读操作。
out.flush();

byte[]buffer=newbyte[1024];
intlen=in.read();
in.read(buffer);
System.out.println("--->"+newString(buffer));


}catch(IOExceptione){
e.printStackTrace();
}
}
}
}

㈢ android开发tcp客户端循环接收信息,为什么收不到呀

InputStream reader = socket.getInputStream()
byte[] bbuf = new byte[1000];
int count = reader.read(bbuf);
把读取数据的方式改成这种试试,怕是你使用readline()方法的时候接收不到最后的“回车换行符”导致的。

㈣ Android网络请求知识(三)授权,TCP/IP,HTTPS建立过程

由身份或持有的令牌确认享有的权限,登录过程实质上的目的也是为了确认权限。

Cookie是客户端给服务器用的,setCookie是服务器给客户端用的。cookie由服务器处理,客户端负责存储

客户端发送cookie:账户和密码
服务端收到后确认登录setCookie:sessionID=1,记下sessionID
客户端收到sessionID后记录,以后请求服务端带上对比记录下sessionID,说明已经登录

会话管理:登录状态,购物车
个性化:用户偏好,主题
Tracking:分析用户行为

XXS:跨脚本攻击,及使用JavaScript拿到浏览器的cookie之后,发送到自己的网站,以这种方式来盗用用户Cookie。Server在发送Cookie时,敏感的Cookie加上HttpOnly,这样Cookie只能用于http请求,不能被JavaScript调用
XSRF:跨站请求伪造。Referer 从哪个网站跳转过来

两种方式:Basic和Bearer

首先第三方网站向授权网站申请第三方授权合作,拿到授权方颁发的client_id和client_secret(一般都是appid+appkey的方式)。

在这就过程中申请的client_secret是服务器持有的,安全起见不能给客户端,用服务端去和授权方获取用户信息,再传给客户端,包括④,⑤的请求过程也是需要加密的。这才是标准的授权过程。
有了access_token之后,就可以向授权方发送请求来获取用户信息

步骤分析就是上面的内容,这里把第4,6,8请求的参数分析一下
第④步参数:
response_type:指授权类型,必选,这里填固定值‘code’
client_id:指客户端id,必选,这里填在平台报备时获取的appid
redirect_uri:指重定向URI,可选
scope:指申请的权限范围,可选
state:指客户端当前状态,可选,若填了,则认证服务器会原样返回该值

第⑥步参数:
grant_type:指使用哪种授权模式,必选,这里填固定值‘authorization_code’
code:指从第⑤步获取的code,必选
redirect_uri:指重定向URI,必选,这个值需要和第④步中的redirect_uri保持一致
client_id:指客户端id,必选,这里填在平台报备时获取的appid
client_secret:指客户端密钥,必选,这里填在平台报备时获取的appkey

第⑧步参数:
access_token:指访问令牌,必选,这里填第⑦步获取的access_token
token_type:指令牌类型,必选,大小写不敏感,bearer类型 / mac类型
expires_in:指过期时间,单位秒,当其他地方已设置过期时间,此处可省略该参数
refresh_token:指更新令牌,可选,用即将过期token换取新token
scope:指权限范围,可选,第④步中若已申请过某权限,此处可省略该参数

我们在上面的第八步中会有refresh_token的参数,这个在实际操作中也比较常见

有时候我们在自己的项目中,将登陆和授权设计成类似OAuth2的过程,不过去掉Authorization code。登陆成功返回access_token,然后客户端再请求时,带上access_token。

我们常常会说到TCP/IP,那到底是什么呢。这就需要讲到网络分层模型。TCP在传输层,IP在网络层。那为什么需要分层?因为网络不稳定,导致需要重传的问题。为了提高传输效率我们就需要分块,在传输层中就会进行分块。TCP还有两个重要的内容就是三次握手,四次分手。

HTTPS 协议是由 HTTP 加上TLS/SSL协议构建的可进行加密传输、身份认证的网络协议,主要通过数字证书、加密算法、非对称密钥等技术完成互联网数据传输加密,实现互联网传输安全保护

1.客户端通过发送Client Hello报文开始SSL通信。报文中包含客户端支持的SSL的指定版本、加密组件列表(所使用的加密算法及密钥长度),客户端随机数,hash算法。

2.服务器可进行SSL通信时,会以Server Hello报文作为应答。和客户端一样,在报文中包含SSL版本以及加密组件,服务端随机数。服务器的加密组件内容是从接收到客户端加密组件内筛选出来的。

3.之后服务器发送Certificate报文。报文中包含公开密钥证书。一般实际有三层证书嵌套,其实像下面图二直接用根证书机构签名也是可以的,但是一般根证书机构比较忙,需要类似中介的证书机构来帮助。

4.最后服务器发送Server Hello Done报文通知客户端,最初阶段的SSL握手协商部分结束。

5.SSL第一次握手结束后,客户端以Client Key Exchange报文作为回应。报文中包含通信加密中使用的一种被称为Pre-master secret的随机密码串。该报文已用步骤3中的公开密钥进行加密。

6.接着客户端继续发送Change Cipher Spec报文。该报文会提示服务器,在此报文之后的通信会采用Pre-master secret密钥加密。

7.客户端发送Finished报文。该报文包含连接至今全部报文的整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确解密报文作为判定标准。

8.服务器同样发送Change Cipher Spec报文。

9.服务器同样发送Finished报文。

10.服务器和客户端的Finished报文交换完毕之后,SSL连接就算建立完成。当然,通信会受到SSL的保护。从此处开始进行应用层协议的通信,即发送HTTP响应。

11.应用层协议通信,即发送HTTP响应。

12.最后由客户端断开连接。断开连接时,发送close_notify报文。这步之后再发送TCP FIN报文来关闭与TCP的通信。

利用客户端随机数,服务端随机数,per-master secret随机数生成master secret,再生成客户端加密密钥,服务端加密密钥,客户端MAC secert,服务端MAC secert。MAC secert用于做报文摘要,这样能够查知报文是否遭到篡改,从而保护报文的完整性。

Android网络请求知识(一)HTTP基础概念
Android网络请求知识(二)对称和非对称加密、数字签名,Hash,Base64编码
Android网络请求知识(三)授权,TCP/IP,HTTPS建立过程

㈤ Tcp,android客户端服务端断开重连应该怎么个实现

我正好也在做这方面的东西,我们可以交流一下,我这边需要做的是TCP客户端和TCP服务器,无这边服务器搭建目前运行状况良好,但是客户端始终不行,请问你有没有客户端的相关例程,我这边的例程也可以分享给你的说,大家相互借鉴,共同进步。

周末加了一天班,终于把问题解决了,总结一个血的教训给你,就是:你在调试单片机客户端的时候,作为服务器的电脑防火墙一定要关掉啊,我就是因为这样,白忙了两天。

你要实现客户端断开不影响HTTP服务器的运行,就需要建立两个不同的TCP_SERVER_pcb和TCP_CLI ENT_pcb结构体,分别用于客户端和服务器的TCP/IP协议栈控制。并且需要两个不同的发送和接收缓存,不然是不行的。

㈥ android设备怎么设置tcpip

1. 使用USB数据线连接设备(此方法需配置adb环境变量,也可直接进入adb工具目录执行\android-sdk-windows\platform-tools\)。
2. 命令输入adb tcpip 5555 ( 5555为端口号,可以自由指定)。
3. 断开 USB数据,此时可以连接你需要连接的USB设备。
4. 再命令输入 adb connect <设备的IP地址>:5555
后面就可以使用ADB ,DDMS 来调试Android应用或显示Logcat 消息。
5. 如果需要恢复到USB数据线,可以在命令行输入adb usb
注: Android设备的IP地址可以通过(设置->关于手机->状态信息)查看

㈦ Android Http连接和TCP连接的区别

Http是应用层协议,TCP是网络层协议,应用层在TCP/IP四层架构中位于TCP的上一层。

建立Http连接在实现时有以下两种方式:
1、[java] view plain
DefaultHttpClient http = new DefaultHttpClient();
HttpGet method = new HttpGet(url);
HttpResponse response =http.execute(method);
2、[java] view plain
URL url = new URL(uri);
HttpURLConnection connection = (HttpURLConnection)
url.openConnection();
connection.connect();

而TCP连接在实现时要借助Socket(套接字 IP+端口号)
[java] view plain
Socket s = new Socket("localhost", 12345);

区别从这两个连接的实现方式就可以看出来,HTTP连接需要指明资源的URL,发出请求的应用不知道服务器的IP,虽然域名服务器也是要把域名解析成IP地址,但不属于应用所关心的范畴,是网络层应该完成的工作。所以Http连接属于无状态的短连接,若再请求其他数据,需要再重新建立连接。客户端向服务器发送请求后,服务器才知道客户端的存在。
TCP连接实现时需要指明IP地址和端口号,就可以跟目的主机通过三次握手建立联系,该连接一直保持直到某一方提出取消连接,通过四次握手关闭连接。Socket支持TCP/UDP协议,如果使用TCP协议,那么socket连接就是TCP连接。论文提到的应用场景是手机与云端的服务器建立联系,因为要保持连接并指定连接的建立时间,所以在这种场景下使用TCP连接最合适。3G网络不支持端到端建立TCP连接,因为它是client-server模式,所以需要通过云端服务器的辅助来实现手机的端到端通信。

㈧ C# 和Android的 TCP(UDP)通信

服务器程序
它仅仅建立ServerSocket监听,并使用Socket获取输入输出流。
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class SimpleServer {

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub

//创建一个ServerSocket,用于监听客户端socket的连接请求
ServerSocket ss=new ServerSocket(30000);
//采用循环不断接受来自客户端的请求,服务器端也对应产生一个Socket
while(true){
Socket s=ss.accept();
OutputStream os=s.getOutputStream();
os.write("您好,您收到了服务器的新年祝福!n".getBytes("utf-8"));
os.close();
s.close();
}

}}

客户端程序
package my.learn.tcp;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.EditText;

public class SimpleClient extends Activity {
private EditText show;

@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
show = (EditText) findViewById(R.id.show);

try {

Socket socket = new Socket("自己计算机的IP地址", 30000);
//设置10秒之后即认为是超时
socket.setSoTimeout(10000);
BufferedReader br = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
String line = br.readLine();

show.setText("来自服务器的数据:"+line);

br.close();
socket.close();

} catch (UnknownHostException e) {
// TODO Auto-generated catch block
Log.e("UnknownHost", "来自服务器的数据");
e.printStackTrace();
} catch (IOException e) {
Log.e("IOException", "来自服务器的数据");
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

阅读全文

与androidtcp编程相关的资料

热点内容
在健康青岛App挂号怎么查询 浏览:269
普通人上网用的是什么服务器 浏览:453
python安装了找不着 浏览:181
常微分第三版答案pdf 浏览:264
安卓机qq怎么开悬浮窗 浏览:63
备孕三年了怎么缓解压力大 浏览:743
登录阿里云服务器黑屏 浏览:336
匿名元组Python 浏览:725
华为运动健康存储的文件夹 浏览:522
cad正多边形命令 浏览:461
压缩比150能加97油吗 浏览:399
linux新建群在哪个文件夹 浏览:794
韵达快运app在哪里签收 浏览:338
阿里云服务器如何绑定备案域名 浏览:273
单片机用什么键盘好 浏览:25
android动画面试 浏览:309
pdf无法删除 浏览:90
ftp删除文件java 浏览:89
裂变棋牌源码 浏览:87
邀月命令江别鹤退婚 浏览:656