linux用java socket与c的socket通信乱码问题

大致架构是这样的,用java写socket客户端发起报文到c写的socket服务端,服务端再调用动态链接库文件xxx.so内的方法访问aix核心系统再返回数据.机器1:r... 大致架构是这样的,用java写socket客户端发起报文到c写的socket服务端,服务端再调用动态链接库文件xxx.so内的方法访问aix核心系统再返回数据.

机器1: redhat enterprise 5.1
机器2: aix
机器3: windows xp sp3系统

1.
c写的socket服务部署在机器1
java写的socket客户端部署在机器3上

返回数据正常且无中文乱码

2.
c写的socket服务部署在机器1
java写的socket客户端部署在机器1上
返回数据正常,但中文全是"????"的乱码
socket通信用的是字节流,且编码一致

注:c写的socket服务调动态链接库经过测试的,无任何异常,问题应该是出现java与c的socket通信这边,这个问题困扰我们很久了啊!希望有经验的仁兄帮忙啊,非常感谢!
展开
 我来答
Foxcoming
2009-06-01 · TA获得超过692个赞
知道小有建树答主
回答量:718
采纳率:0%
帮助的人:819万
展开全部
应该就是字符集问题。
首先要确定Linux返回的数据中,采用了那种编码方式,如:GBK。
对应的,在Java一端,将字符串信息转换成byte数组并写入Socket,读出的数据也转换成字符串,
如:
String s = "中文" ;
sockoutputstream.write (s.getBytes ("GBK")) ;

读出来时候,
byte [] buf = sockinputStream.read ()

String s = new String (buf, "GBK") ;

这样就可以了。
茂烟f
推荐于2016-10-14 · TA获得超过329个赞
知道小有建树答主
回答量:666
采纳率:0%
帮助的人:658万
展开全部
可以通过调试 检测方案1和方案2下字节流中字节数据是否一致

如果一致 就不是socket的问题 是 java客户端接收数据的问题
如果不一致(不太可能) 可能是java客户端发送数据的问题

本人愚见~!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
祚胤17
2009-06-05 · TA获得超过786个赞
知道大有可为答主
回答量:1149
采纳率:82%
帮助的人:263万
展开全部
要么都用Java,要么都用C++
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
guaidaoK
2009-06-01 · TA获得超过314个赞
知道答主
回答量:468
采纳率:0%
帮助的人:359万
展开全部
只有中文不正常,是不是编码问题?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
老天爷不知道
2009-06-01 · TA获得超过167个赞
知道答主
回答量:131
采纳率:0%
帮助的人:68.6万
展开全部
共同关注
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 3条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式