最近在写一个小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服务器 发送二进制数据相关推荐

  1. android -上传文件到服务器

    android上传文件到服务器       重点:最好是设置好content-type这些参数的配置!     package com.spring.sky.image.upload.network; ...

  2. Android上传文件到Web服务器,PHP接收文件(一)

    Android上传文件到服务器,通常采用构造http协议的方法,模拟网页POST方法传输文件,服务器端可以采用JavaServlet或者PHP来接收要传输的文件.使用JavaServlet来接收文件的 ...

  3. android 上传文件到服务器

    1.编写layout.xml <LinearLayout android:layout_width="match_parent"android:layout_height=& ...

  4. Android上传文件至服务器(转)

    本实例实现每隔5秒上传一次,通过服务器端获取手机上传过来的文件信息并做相应处理:采用Android+Struts2技术. 一.Android端实现文件上传 1).新建一个Android项目命名为and ...

  5. android上传文件至服务器(android端+服务器端)

    引言:本来android文件上传的博客在网上挺多的,不过好些都只是有前台android端的上传,并没有后台服务器端的接收.而且自己写的时候也确实遇见了一些之前没注意到的地方,写出来也算是给自己提个醒. ...

  6. Android上传文件到服务器500,使用WebUploader解决安卓微信浏览器上传图片中遇到的bug...

    摘自个人博客:走啊走的记录,欢迎点击查看,效果更佳! 微信浏览器上传图片bug的原因 微信在新版本中采用的是自己的X5内核浏览器,而在较老的版本中还有可能是安卓的原生浏览器.具体的环境我也不太了解,但 ...

  7. android上传文件到服务器(图片、文本等)

    首先,在项目中导入SmartAndroid.jar包. 然后加入相应的方法: public void uploadFile(String imagePath){//服务器端地址String url = ...

  8. android上传文件用哪个布局,每周总结20130821——android控件的尺寸、http文件上传...

    Android控件的尺寸 android开发中,可以通过编写XML格式的布局文件来实现布局,也可以用纯代码进行布局,通常都是选择XML文件布局.在XML布局文件中,与控件的尺寸有关的属性有androi ...

  9. Android 上传文件,图片。以及服务器端接收相关。

    前面一篇文章写了实现照相功能的一个例子,其实那个实现效果是个略缩图.要查看全图就要先指定照片的存放路径.以后我会修改那个文章.今天先说下图片,文件等上传的实现.接着拿照片说事,光照完了不行还得往服务器 ...

最新文章

  1. 在TensorFlow2.0发布前,帮你掌握TensorFlow的必备内容
  2. Pytorch v0.4.1发布:添加频谱范数,自适应Softmax,优化CPU处理速度,添加异常检测NaN等
  3. 【前端】JavaScript
  4. linux内核驱动之 用户空间和内核空间
  5. 初学编程:算法编程是什么意思?盘点最常用的 5 大算法!
  6. matlab检验数据异方差,求教!怀特异方差检验方法在matlab中的实现,以及广义最........
  7. python图片处理大全_python图像处理:怎么给图片加框?
  8. 利用watir自动化测试并截图,截图后保存
  9. 866 数据结构模拟题(一)及解析
  10. L1-007 念数字(Python3)
  11. 自定义view从0到1
  12. EasyExcel合并单元格策略样例
  13. 世界杯中隐藏的IoT物联网黑科技
  14. BERT uncased和cased的区别
  15. linux开启rdp服务,让windows电脑mstsc远程,linux rdesktop远程windows机器
  16. 氢动力赛车是否是清洁交通的关键?
  17. oracle数据库创建物化视图
  18. PTA c#PTA第五章循环练习答案I【程序设计基础】
  19. cad 打开硬件加速卡_CAD打开后部分图形丢失该如何恢复?
  20. 个性定制化CRM,完美契合企业需求

热门文章

  1. C#LeetCode刷题之#232-用栈实现队列​​​​​​​​​​​​​​(Implement Queue using Stacks)
  2. github ssh密钥_如何使用SSH密钥在一台机器上管理多个GitHub帐户
  3. Java 统计字母个数
  4. python双划线_Python中单下划线(_)和双下划线(__)的特殊用法
  5. 最新教程:Python开发钉钉群自定义机器人
  6. ReportViewer教程(3)-添加空报表Report1.rdlc
  7. PRML-系类二之2.1
  8. arduino运行java_IC之路(一)Proteus-Arduino仿真环境搭建
  9. leetcode —— 31. 下一个排列
  10. leetcode - 120. 三角形最小路径和