问题描述
- 关于socket编程在java与c下的传输问题
-
最近在做一个项目,使用c写的客户端,用java写的服务器,客户端传输结构体,采用函数memcpy转换为字符串传输,那么在服务器端应该如何接受并解析??目前为止本人一直接受到的都是乱码
解决方案
Java Socket 网络编程问题剖析
Java socket编程时readLine()问题
网络编程感想(一)基于socket传输延迟问题
----------------------
解决方案二:
检查双方编码是否一致?
解决方案三:
是不是输入流和输出流所使用的编码集不一致。
解决方案四:
是不是输入流和输出流所使用的编码集不一致。
解决方案五:
是不是输入流和输出流所使用的编码集不一致。
解决方案六:
先传递字节看有没问题,再把接收的字节进行编码转换,一步步调
解决方案七:
建议把结构体的内容按一定格式转换成字符串传出去,再把接收到的字符串解释出来放回结构体中
解决方案八:
本人对C不熟悉,不过以前也写过java跟C交互的代码,都是以二进制流发送与接受的,代码如下,你自己发挥吧。
soc = new Socket(ip,port);
soc.setSoTimeout(timeOut);
//发送报文
os = soc.getOutputStream();
os.write(reqSb.toString().getBytes(CodeSet));
os.flush();
//接听报文
is = soc.getInputStream();
byte[] lenByte = new byte[4];
String lenStr = "";
is.read(lenByte, 0, 4);
lenStr = new String(lenByte, 0, 4, "gbk");
// log.info("响应报文长度:"+lenStr);
int size = Integer.parseInt(lenStr);
bodyBuff = new byte[size];
is.read(bodyBuff, 0, size);
String rspStr = new String(bodyBuff,0,bodyBuff.length,"gbk");
log.info("应答报文:#"+rspStr+"#");