遇到一个问题,提示报错 流不支持读取 求大神帮我看看

Roger丶Yu 2017-03-31 09:26:13
写了一个从客户端接收图片的程序 我这边是服务器 但是提示流不支持读取fs.Read(inputByte, 0, inputByte.Length);这个地方报错
求大神帮我看看

private void Form1_Load(object sender, EventArgs e)
{
Thread th = new Thread(new ThreadStart(run));
th.Start();
}
public void run()
{
server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
server.Bind(new IPEndPoint(IPAddress.Any, 40000));
server.Listen(0);
//连接到客户端
LogHelper.WriteLog("开始监听...");
Socket socket = server.Accept();
LogHelper.WriteLog("有链接");
receiveFile(socket);
}

private void receiveFile(Socket socket)
{
byte[] inputByte = new byte[1024];
int length = 0;
NetworkStream ntwStream = new NetworkStream(socket);
StreamReader strmReader = new StreamReader(ntwStream);
FileStream fs = null;
FileStream fs2 = null;
StringBuilder sb = new StringBuilder();
try
{
try
{

socket.Receive(inputByte);
LogHelper.WriteLog(">>>>>>>inputByte>>>>>>>>>>" + Encoding.UTF8.GetString(inputByte));
fs = new System.IO.FileStream("d:/cc.jpg", System.IO.FileMode.Create, System.IO.FileAccess.Write);
fs2 = new System.IO.FileStream("d:/cc.txt", System.IO.FileMode.Create, System.IO.FileAccess.Write);
LogHelper.WriteLog(">>>开始接收数据>>>");
int a =fs.Read(inputByte, 0, inputByte.Length);
while ((length = a) > 0)
{
string s = System.Text.Encoding.Default.GetString(inputByte);
if (s.IndexOf("over") > -1)
{
LogHelper.WriteLog(">> : " + s);
}
else if (s.IndexOf("00000000") > -1)
{
LogHelper.WriteLog(">> : " + s);
fs.Write(inputByte, 21, length - 21);
fs2.Write(inputByte, 21, length - 21);
}
else if (s.IndexOf("11111111") > -1)
{
LogHelper.WriteLog(s);
fs.Write(inputByte, 0, length - 8);
fs2.Write(inputByte, 0, length - 8);
break;
}
else
{

fs.Write(inputByte, 0, length);
fs2.Write(inputByte, 0, length);
}
}
fs.Close();
LogHelper.WriteLog(">>>>接收完成!>>>");
}
finally
{
if (fs != null)
fs.Close();
if (strmReader != null)
strmReader.Close();
if (socket != null)
socket.Close();
LogHelper.WriteLog(">>>>关闭完成!>>>");
}

}
catch (Exception ex)
{
LogHelper.WriteLog(">>>>出错>>>" + ex.Message);
}
}

...全文
267 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Roger丶Yu 2017-03-31
  • 打赏
  • 举报
回复
引用 2 楼 Forty2 的回复:
[quote=引用 楼主 qq_16458561 的回复:] ... NetworkStream ntwStream = new NetworkStream(socket); StreamReader strmReader = new StreamReader(ntwStream); ...
也没有见你用到strmReader啊? 使用/借鉴代码没有问题,但要是要理解不是? [/quote] int a = strmReader.Read(inputByte, 0, inputByte.Length); 这个为什么会报错啊?
Roger丶Yu 2017-03-31
  • 打赏
  • 举报
回复
引用 1 楼 shingoscar 的回复:
这不废话么,fs创建出来就是只写的,当然不能读
嗯 我发现了 哈哈 尴尬了
Forty2 2017-03-31
  • 打赏
  • 举报
回复
引用 楼主 qq_16458561 的回复:
... NetworkStream ntwStream = new NetworkStream(socket); StreamReader strmReader = new StreamReader(ntwStream); ...
也没有见你用到strmReader啊? 使用/借鉴代码没有问题,但要是要理解不是?
Poopaye 2017-03-31
  • 打赏
  • 举报
回复
这不废话么,fs创建出来就是只写的,当然不能读

110,545

社区成员

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

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

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