图片传输问题,用TCP/IP协议 如何通过TCP/IP协议进行图片传输,最好有源代码,我试拉半天,还是不行,只会传输文本文件 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 文本文件和图片文件不都一样吗,都是先用FileStream读出byte,然后进行传送即可。 除了TCP/IP协议,你还能用什么?这个根本就不关TCP/IP协议的事 你可以参看一下这个:http://community.csdn.net/Expert/topic/4834/4834062.xml?temp=.8300287 传输图片时可以更改图片的扩展名,传送到目的地后再改回原来的扩展名(例如:a.bmp改为a.bmp.aqs).我原先作时也碰到过这种问题,我是用webservices来实现的,但是IIS屏蔽了一些文件的传送,更改扩展名后就没有问题了,扩展名你可以随便写就行。 Socket函数中有一个专门传输文件的函数,好像叫TransformFile(),把图片当成文件来传输也可以。 应该是你在传输的时候读取字节没有完全读取。seek //发送方 FileStream myFileStream = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.None); int[] b = new int[myFileStream.Length]; for (int i = 0; i < b.Length; i++) b[i] = myFileStream.ReadByte(); myFileStream.Close(); char[] c = new char[b.Length]; for (int i = 0; i < b.Length; i++) c[i] = (char)b[i]; //侦听695号端口 TcpListener tcpServer = new TcpListener(695); tcpServer.Start(); //接收阻塞,知道有人接 TcpClient clientConn = tcpServer.AcceptTcpClient(); Byte[] byteResponse = Encoding.ASCII.GetBytes(c);//必须要用char格式 clientConn.GetStream().Write(byteResponse, 0, byteResponse.Length); clientConn.Close();//接收方TcpClient client = new TcpClient(); client.Connect(new IPEndPoint(serverIp, 695));Stream strm = client.GetStream(); //读取流,并转换为ASCII byte[] inputBuffer = new byte[27780]; int bytes = strm.Read(inputBuffer, 0, inputBuffer.Length);程序比较烂,是根据传输字符串改的 为什么要转到手呢你直接读出byte,然后传送即可,为什么还要转成char。 发送端大致如下:FileStream myFileStream = new FileStream(path, FileMode.Open,FileAccess.Read, FileShare.None);byte[] b = new byte[myFileStream.Length];myFileStream.Read( b, 0, myFileStream.Length );myFileStream.Close();//侦听695号端口TcpListener tcpServer = new TcpListener(695);tcpServer.Start();//接收阻塞,知道有人接TcpClient clientConn = tcpServer.AcceptTcpClient();clientConn.GetStream().Write( b, 0, b.Length);clientConn.Close(); Byte[] byteResponse = Encoding.ASCII.GetBytes(c);这样转换是有问题的,ASCII并不能解释所有字符!http://henryfan.cnblogs.com/archive/2006/07/04/442337.html支持对象的传输和接收。 多谢Knight94(愚翁),真是一句话点醒梦中人亚可还有一个问题,就是在 int bytes = strm.Read(inputBuffer, 0, inputBuffer.Length);必须加个暂停,不然就只能传1460个字节,多拉不能传,为什么?有没有解决的办法 Knight94(愚翁),有没有qq?我的qq号是79400444,能不能加我,我现在做的程序估计以后还有很多问题要问你 多谢各位,结贴,特别谢谢Knight94(愚翁) http响应头无响应码怎么办? 哪位大侠 能讲一下 字符串拼接的具体作用是啥?谢谢 c#中如何即时的测试一个类 200分问 C#调用读卡器 mysql的字符转换问题和c#基础窗体跳转问题 朋友帮我写个判断语句哦.很简单的.我不会.呵呵 c# 开发华为EC169上网卡发送短信 中文乱码 求高手帮助 醒目:比较难的问题,给提议的也发分。 散点分~! propertyGrid日期下拉框怎么显示时间 关于Asp.net调用activeX控件问题 问下,我们这专科生面试应该准备些什么?
你可以参看一下这个:
http://community.csdn.net/Expert/topic/4834/4834062.xml?temp=.8300287
FileStream myFileStream = new FileStream(path, FileMode.Open,
FileAccess.Read, FileShare.None); int[] b = new int[myFileStream.Length];
for (int i = 0; i < b.Length; i++)
b[i] = myFileStream.ReadByte();
myFileStream.Close();
char[] c = new char[b.Length];
for (int i = 0; i < b.Length; i++)
c[i] = (char)b[i]; //侦听695号端口
TcpListener tcpServer = new TcpListener(695);
tcpServer.Start(); //接收阻塞,知道有人接
TcpClient clientConn = tcpServer.AcceptTcpClient(); Byte[] byteResponse = Encoding.ASCII.GetBytes(c);//必须要用char格式
clientConn.GetStream().Write(byteResponse, 0, byteResponse.Length);
clientConn.Close();//接收方
TcpClient client = new TcpClient();
client.Connect(new IPEndPoint(serverIp, 695));
Stream strm = client.GetStream();
//读取流,并转换为ASCII
byte[] inputBuffer = new byte[27780];
int bytes = strm.Read(inputBuffer, 0, inputBuffer.Length);程序比较烂,是根据传输字符串改的
FileAccess.Read, FileShare.None);byte[] b = new byte[myFileStream.Length];
myFileStream.Read( b, 0, myFileStream.Length );
myFileStream.Close();//侦听695号端口
TcpListener tcpServer = new TcpListener(695);
tcpServer.Start();//接收阻塞,知道有人接
TcpClient clientConn = tcpServer.AcceptTcpClient();clientConn.GetStream().Write( b, 0, b.Length);
clientConn.Close();
这样转换是有问题的,ASCII并不能解释所有字符!
http://henryfan.cnblogs.com/archive/2006/07/04/442337.html
支持对象的传输和接收。
可还有一个问题,就是在 int bytes = strm.Read(inputBuffer, 0, inputBuffer.Length);
必须加个暂停,不然就只能传1460个字节,多拉不能传,为什么?
有没有解决的办法