C#如何发送图片信息给JAVA程序接收

heyu1000 2010-05-31 10:38:46
我的客户端是用C#写的,C#用SOCKET发送如何发送图片数据到一个JAVA的程序来接收图片信息呢,我的C#序列化后用JAVA不知道能不能反序列化,不知道哪位大侠有做过这方面的程序!另外是将图片序列化成一个字符串存到XML里面,JAVA收到信息之后解析XML获得这个序列化之后的图片字符串再反序列化,如果两端都是C#问题不大,但是不知道JAVA怎么做!
...全文
415 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
patrickpan 2010-06-03
  • 打赏
  • 举报
回复
可以用中间件,我们目前用的Tibico RV, Java和.net通过Tibco RV通信.
wuxing2006 2010-06-02
  • 打赏
  • 举报
回复
按你的情况 最好是使用base64编码后传输
如:MemoryStream ms = new ...
string result = Convert.ConvertToBase64(ms.ToArray());


send(result);
wuxing2006 2010-06-02
  • 打赏
  • 举报
回复
byte[] 直接send过去
至于文件头尾,你还是不理解tcp连接
你可以试着做做,不管这个问题
huwen7565833 2010-06-02
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 llddyy123wq 的回复:]
楼主,我觉得吧,最主要是问题是你把帖子发错地方了。既然你可以把图片转化成序列化的xml串传到java那边。
现在的问题就得找java版块的人来帮着解决了。你放到这一堆做c#的人群中,奈何大家想帮,也使不上劲呀。虽说我们中有些人是对java有些了解,甚至是做过。可是大家主要精力还是放在c#中的。你问问做java的朋友们吧。
[/Quote]
说的很有道理,把这个帖子放到Java板块看看!!!
wuxing2006 2010-06-02
  • 打赏
  • 举报
回复
使用的Encoding一样就可以
wuxing2006 2010-06-02
  • 打赏
  • 举报
回复
BASE64都可以
llddyy123wq 2010-06-02
  • 打赏
  • 举报
回复
楼主,我觉得吧,最主要是问题是你把帖子发错地方了。既然你可以把图片转化成序列化的xml串传到java那边。
现在的问题就得找java版块的人来帮着解决了。你放到这一堆做c#的人群中,奈何大家想帮,也使不上劲呀。虽说我们中有些人是对java有些了解,甚至是做过。可是大家主要精力还是放在c#中的。你问问做java的朋友们吧。
heyu1000 2010-06-02
  • 打赏
  • 举报
回复
谁都知道SOCKET发送的是byte[],不过这不是问题的关键,如果做过的就不会专门关注这种简单的地方来说了,这不是我要想解决的问题,不过也还是非常感谢各位,呵呵!
heyu1000 2010-06-02
  • 打赏
  • 举报
回复
哎,怎么都喜欢避重就轻呢,看来都没做过,呵呵!
anabiosispe 2010-06-02
  • 打赏
  • 举报
回复
问题是问java是否实现类似C#的反序列化,这个...不懂java
哪怕是C#的序列化后的字节数据,用VC能否反序列化,我也是不知道的
heyu1000 2010-06-02
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 llddyy123wq 的回复:]
楼主,我觉得吧,最主要是问题是你把帖子发错地方了。既然你可以把图片转化成序列化的xml串传到java那边。
现在的问题就得找java版块的人来帮着解决了。你放到这一堆做c#的人群中,奈何大家想帮,也使不上劲呀。虽说我们中有些人是对java有些了解,甚至是做过。可是大家主要精力还是放在c#中的。你问问做java的朋友们吧。
[/Quote]

恩,这个兄弟说的在理,现在基本上解决了,非常感谢大家!!
heyu1000 2010-06-01
  • 打赏
  • 举报
回复
如何用这种方式传图片的问题,另外最主要是JAVA怎么解析,如果都是用C#的话自然是没有任何问题的
heyu1000 2010-06-01
  • 打赏
  • 举报
回复
非常感谢楼上所有朋友的回复,
其实我现在就是用的SOCKET通讯,Tcp协议,包头+包体的方式,这种方式对于普通的数据自然是没有任何问题的,但是现在主要的问题是怎么传图片,我将图片转换成一个字符串放XML里面,那么在JAVA里面如何才能将这个字符串转换成图片
skep99 2010-06-01
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 heyu1000 的回复:]
非常感谢楼上所有朋友的回复,
其实我现在就是用的SOCKET通讯,Tcp协议,包头+包体的方式,这种方式对于普通的数据自然是没有任何问题的,但是现在主要的问题是怎么传图片,我将图片转换成一个字符串放XML里面,那么在JAVA里面如何才能将这个字符串转换成图片
[/Quote]

任何文件都是byte[]
即使用xml传也没什么问题,比如图片都转成base64放xml里,java把xml的内容decode成byte[]再恢复成图片
doubledragon2010 2010-05-31
  • 打赏
  • 举报
回复
路过。学习了哈!
skep99 2010-05-31
  • 打赏
  • 举报
回复
直接通过socket传图片的byte流
yun166 2010-05-31
  • 打赏
  • 举报
回复
帮顶~~~~~~~~~~~~~~
llddyy123wq 2010-05-31
  • 打赏
  • 举报
回复
好久没摸过java代码了,呵呵。你可在.net中使用HttpWebRequest和HttpWebResponse来发送消息和接收消息。
思想是通过一个向java的一个jsp页面传递参数的形式把你转化过的二进制流传过去。如果要加密也行,java和.net有一个公共的加密算法,具体我忘记了,你自己看看吧。
然后在java中获取这个二进制图片流,进行处理。OK.问题解决。
我以前做过类似的,呵呵,希望对你有帮助。
HolyPlace 2010-05-31
  • 打赏
  • 举报
回复
直接使用图片的二进制流呢?

public Byte[] getphoto(string photopath)
{
string str = photopath;
FileStream file = new FileStream(str, FileMode.Open, FileAccess.Read);
Byte[] bytBLOBData = new Byte[file.Length];
file.Read(bytBLOBData, 0, bytBLOBData.Length);
file.Close();
return bytBLOBData;
}//这是定义函数..

二进制流C#和java是通用的吧
heyu1000 2010-05-31
  • 打赏
  • 举报
回复
另外我用C#序列化的代码在我博客里面也有

Bitmap bitMap = new Bitmap(filename);
MemoryStream ms = new MemoryStream();
bitMap.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);

StringWriter sw = new StringWriter();
XmlTextWriter xw = new XmlTextWriter(sw);
xw.Formatting = Formatting.Indented;
XmlSerializer ser = new XmlSerializer(ms.GetBuffer().GetType());
ser.Serialize(xw, ms.GetBuffer());
string xmlString = sw.GetStringBuilder().ToString();
xw.Close();
sw.Close();
ms.Close();

XmlDocument doc = new XmlDocument();
doc.LoadXml(xmlString);
if (doc != null && doc.ChildNodes.Count > 1 && doc.ChildNodes[1] != null)
{
XmlNode node = doc.ChildNodes[1];
photoString = node.InnerText;
}


不知道photoString 用JAVA怎么反序列化
加载更多回复(5)

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧