android 上传文件到 c 服务器,android 怎么样用socket给C服务器 发送二进制数据
最近在写一个小APP,卡在android与服务器端通讯上了,大致需求是,android端发送二进制数据,文件头为0x00 0x08 0x0b,后面跟字符串的内容为abcd_efdgh, 结尾用0x00。
写了个demo,即在editText中输入字符,然后点按钮发送时通过 getText().toString().getBytes()转成二进制格式,经socket发出,但是貌似服务器无响应。
代码如下:
public class MainActivity extends Activity {
private EditText ed_tex;
private Button btn_sent;
private int SERVER_POINT = 2041;
private String SERVER_ADDRESS = "192.168.18.127";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init() {
// TODO Auto-generated method stub
ed_tex = (EditText) findViewById(R.id.ed_text);
btn_sent = (Button) findViewById(R.id.btn_sent);
btn_sent.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
byte[] str= ed_tex.getText().toString().getBytes();//截取输入字符串中的数值变成二进制
if (v != null && !str.equals("")) {
System.out.println("准备发送....");
new SendThred(str).start();
}
}
});
}
class SendThred extends Thread implements Runnable {
byte[] Str_message;
public SendThred(byte[] str){
this.Str_message = str;//自定义线程发送输入字节
}
public void run() {
try {
System.out.println("正在连接服务器...");
Socket s = new Socket(SERVER_ADDRESS, SERVER_POINT);
System.out.println("成功连接服务器...");
System.out.println("准备发送数据...");
DataOutputStream out = new DataOutputStream(s.getOutputStream());
out.write(Str_message);
System.out.println("成功发送数据...");
System.out.println("准备接收服务器返回结果...");
DataInputStream is = new DataInputStream(s.getInputStream());
System.out.println("成功接收服务器返回数据:" + is.readUTF());
//System.out.println("成功接收服务器返回数据:" + is.read());
Toast.makeText(getApplicationContext(), "成功接收服务器返回数据:" + is.readUTF(), Toast.LENGTH_SHORT).show();
is.close();
out.close();
s.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
解决方案
20
第一,你构造的协议呢?本人看你直接把字符串转成的字节数组发出去了,协议头和协议尾呢?你没有加啊,有可能服务端看接收到的不是以规定的字节开头的抛弃了没有处理。
第二,你们传的字符串转成字节数组是约定的用UTF-8编码吗?
第三,涉及到本人构造协议,已经不是基本数据类型了,不要用DataInputStream和DataOutputStream。
当然以上只是一些建议,你试试吧,不一定对。
10
服务器需要给你这边写你才能接受的,服务器写了用write(outstream),把输出流写出,还要用flush()强制刷新缓冲流,才能写出来,你可以检查下这个
CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明android 怎么样用socket给C服务器 发送二进制数据!
android 上传文件到 c 服务器,android 怎么样用socket给C服务器 发送二进制数据相关推荐
- android -上传文件到服务器
android上传文件到服务器 重点:最好是设置好content-type这些参数的配置! package com.spring.sky.image.upload.network; ...
- Android上传文件到Web服务器,PHP接收文件(一)
Android上传文件到服务器,通常采用构造http协议的方法,模拟网页POST方法传输文件,服务器端可以采用JavaServlet或者PHP来接收要传输的文件.使用JavaServlet来接收文件的 ...
- android 上传文件到服务器
1.编写layout.xml <LinearLayout android:layout_width="match_parent"android:layout_height=& ...
- Android上传文件至服务器(转)
本实例实现每隔5秒上传一次,通过服务器端获取手机上传过来的文件信息并做相应处理:采用Android+Struts2技术. 一.Android端实现文件上传 1).新建一个Android项目命名为and ...
- android上传文件至服务器(android端+服务器端)
引言:本来android文件上传的博客在网上挺多的,不过好些都只是有前台android端的上传,并没有后台服务器端的接收.而且自己写的时候也确实遇见了一些之前没注意到的地方,写出来也算是给自己提个醒. ...
- Android上传文件到服务器500,使用WebUploader解决安卓微信浏览器上传图片中遇到的bug...
摘自个人博客:走啊走的记录,欢迎点击查看,效果更佳! 微信浏览器上传图片bug的原因 微信在新版本中采用的是自己的X5内核浏览器,而在较老的版本中还有可能是安卓的原生浏览器.具体的环境我也不太了解,但 ...
- android上传文件到服务器(图片、文本等)
首先,在项目中导入SmartAndroid.jar包. 然后加入相应的方法: public void uploadFile(String imagePath){//服务器端地址String url = ...
- android上传文件用哪个布局,每周总结20130821——android控件的尺寸、http文件上传...
Android控件的尺寸 android开发中,可以通过编写XML格式的布局文件来实现布局,也可以用纯代码进行布局,通常都是选择XML文件布局.在XML布局文件中,与控件的尺寸有关的属性有androi ...
- Android 上传文件,图片。以及服务器端接收相关。
前面一篇文章写了实现照相功能的一个例子,其实那个实现效果是个略缩图.要查看全图就要先指定照片的存放路径.以后我会修改那个文章.今天先说下图片,文件等上传的实现.接着拿照片说事,光照完了不行还得往服务器 ...
最新文章
- 在TensorFlow2.0发布前,帮你掌握TensorFlow的必备内容
- Pytorch v0.4.1发布:添加频谱范数,自适应Softmax,优化CPU处理速度,添加异常检测NaN等
- 【前端】JavaScript
- linux内核驱动之 用户空间和内核空间
- 初学编程:算法编程是什么意思?盘点最常用的 5 大算法!
- matlab检验数据异方差,求教!怀特异方差检验方法在matlab中的实现,以及广义最........
- python图片处理大全_python图像处理:怎么给图片加框?
- 利用watir自动化测试并截图,截图后保存
- 866 数据结构模拟题(一)及解析
- L1-007 念数字(Python3)
- 自定义view从0到1
- EasyExcel合并单元格策略样例
- 世界杯中隐藏的IoT物联网黑科技
- BERT uncased和cased的区别
- linux开启rdp服务,让windows电脑mstsc远程,linux rdesktop远程windows机器
- 氢动力赛车是否是清洁交通的关键?
- oracle数据库创建物化视图
- PTA c#PTA第五章循环练习答案I【程序设计基础】
- cad 打开硬件加速卡_CAD打开后部分图形丢失该如何恢复?
- 个性定制化CRM,完美契合企业需求
热门文章
- C#LeetCode刷题之#232-用栈实现队列​​​​​​​​​​​​​​(Implement Queue using Stacks)
- github ssh密钥_如何使用SSH密钥在一台机器上管理多个GitHub帐户
- Java 统计字母个数
- python双划线_Python中单下划线(_)和双下划线(__)的特殊用法
- 最新教程:Python开发钉钉群自定义机器人
- ReportViewer教程(3)-添加空报表Report1.rdlc
- PRML-系类二之2.1
- arduino运行java_IC之路(一)Proteus-Arduino仿真环境搭建
- leetcode —— 31. 下一个排列
- leetcode - 120. 三角形最小路径和