发送端发送一个参数的值给接收端,难道只能将参数的值转换成字符串发送给接收端然后再接收到字符串再进行处理得到这个值?    还有一个问题,能不能一次发送多个值给接收端进行处理?新手求解!

解决方案 »

  1.   

    android的socket跟其他的socket没什么特别不一样的,不是只能发字串的。
    你可以发送一个字节流给对方,一次也可以发送多个参数,只要双方遵循同一个协议就好了,也就是对方收到以后知道怎么把这些参数提取出来。
      

  2.   

    怎么发送多个参数啊?貌似java没有结构体吧?这怎么发送呢?我是刚接触java,很多东西都不是很了解求教!
      

  3.   

    比方你发送“para1+para2+para3+para4+....”,对方收到了以后开始解析,碰到一个加号,就知道是一个参数的结尾和下一个参数的开始。这样就可以把所有参数提取出来了。
    这就是一个最简单的协议。你还可以把协议定的复杂和严谨一些。
      

  4.   

    能贴点代码或者例子帖子吗?
    其实你将需要发送的对象类进行序列化,implements Serializable
    然后调用writeObject(object)接收方直接强转为对象就行
      

  5.   

    JsonObject json = new JsonObject();
    json.put(key1,value1);
    json.put(key2,value2);
    socket.getOutputStream().write(json.toString().getBytes());
      

  6.   

    能贴点代码或者例子帖子吗?
    其实你将需要发送的对象类进行序列化,implements Serializable
    然后调用writeObject(object)接收方直接强转为对象就行
    如果我想用android的内部类我该怎么用呢?比如我想用MotionEvent类。
      

  7.   

    能贴点代码或者例子帖子吗?
    其实你将需要发送的对象类进行序列化,implements Serializable
    然后调用writeObject(object)接收方直接强转为对象就行
    喂喂喂,回答我下啊。
      

  8.   

    能贴点代码或者例子帖子吗?
    其实你将需要发送的对象类进行序列化,implements Serializable
    然后调用writeObject(object)接收方直接强转为对象就行
    如果我想用android的内部类我该怎么用呢?比如我想用MotionEvent类。
    那肯定不行....
      

  9.   

    能贴点代码或者例子帖子吗?
    其实你将需要发送的对象类进行序列化,implements Serializable
    然后调用writeObject(object)接收方直接强转为对象就行
    如果我想用android的内部类我该怎么用呢?比如我想用MotionEvent类。
    那肯定不行....
    public boolean onTouchEvent(MotionEvent event){
    }
    比如我想把event这个变量传到服务端那边没有办法吗?
      

  10.   

    能贴点代码或者例子帖子吗?
    其实你将需要发送的对象类进行序列化,implements Serializable
    然后调用writeObject(object)接收方直接强转为对象就行
    如果我想用android的内部类我该怎么用呢?比如我想用MotionEvent类。
    那肯定不行....
    public boolean onTouchEvent(MotionEvent event){
    }
    比如我想把event这个变量传到服务端那边没有办法吗?
    你应该是想得到event里面的x y坐标值吧,自己重新写一个类并序列化,把需要的值在你的类中重新包装下..然后发去
      

  11.   


    你有没有什么socket通信用Serializable的例子吗?我这边接收端说没有找到类。不知道怎么回事。
      

  12.   

    http://blog.csdn.net/cq361106306/article/details/8107105
      

  13.   

    我是有一个接收端一个是发送端,分别是两个工程,我把那个需要发送的类分别加到了两个工程中,然后接收端就会报没找到类的错误。你帮我看看01-03 07:49:46.408: D/dalvikvm(14528): Late-enabling CheckJNI
    01-03 07:49:46.448: I/dalvikvm(14528): Turning on JNI app bug workarounds for target SDK version 8...
    01-03 07:49:46.578: I/System.out(14528): 开始服务
    01-03 07:50:18.038: D/ViewRootImpl(14708): pckname = study.message.receive
    01-03 07:50:18.048: I/System.out(14708): 开始服务
    01-03 07:52:08.608: I/System.out(14708): S: Error
    01-03 07:52:08.608: W/System.err(14708): java.lang.ClassNotFoundException: com.example.touchevent.SaveInformation
    01-03 07:52:08.618: W/System.err(14708):  at java.lang.Class.classForName(Native Method)
    01-03 07:52:08.618: W/System.err(14708):  at java.lang.Class.forName(Class.java:217)
    01-03 07:52:08.618: W/System.err(14708):  at java.io.ObjectInputStream.resolveClass(ObjectInputStream.java:2297)
    01-03 07:52:08.618: W/System.err(14708):  at java.io.ObjectInputStream.readNewClassDesc(ObjectInputStream.java:1656)
    01-03 07:52:08.618: W/System.err(14708):  at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:683)
    01-03 07:52:08.618: W/System.err(14708):  at java.io.ObjectInputStream.readNewObject(ObjectInputStream.java:1799)
    01-03 07:52:08.618: W/System.err(14708):  at java.io.ObjectInputStream.readNonPrimitiveContent(ObjectInputStream.java:787)
    01-03 07:52:08.618: W/System.err(14708):  at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1999)
    01-03 07:52:08.618: W/System.err(14708):  at java.io.ObjectInputStream.readObject(ObjectInputStream.java:1956)
    01-03 07:52:08.618: W/System.err(14708):  at study.message.receive.Msg_REC_Background$AndroidServer.run(Msg_REC_Background.java:53)
    01-03 07:52:08.618: W/System.err(14708):  at java.lang.Thread.run(Thread.java:856)
    01-03 07:52:08.618: W/System.err(14708): Caused by: java.lang.NoClassDefFoundError: com/example/touchevent/SaveInformation
    01-03 07:52:08.618: W/System.err(14708):  ... 11 more
    01-03 07:52:08.618: W/System.err(14708): Caused by: java.lang.ClassNotFoundException: com.example.touchevent.SaveInformation
    01-03 07:52:08.628: W/System.err(14708):  at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
    01-03 07:52:08.628: W/System.err(14708):  at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
    01-03 07:52:08.628: W/System.err(14708):  at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
    01-03 07:52:08.628: W/System.err(14708):  ... 11 more
    这是发送端的发送代码ObjectOutputStream ops = new ObjectOutputStream(socket.getOutputStream()); 
    ops.writeObject(saveInformation);
    这是接收端的接收代码ObjectInputStream ois = new ObjectInputStream(client.getInputStream()); 
    SaveInformation saveInformation = (SaveInformation) ois.readObject();