【发布时间】:2013-10-10 19:50:55
【问题描述】:
我有两种方法,prepareData()和sendData():
private void prepareData(string longFileName, string shortFileName)
{
try
{
byte[] fileNameByte = Encoding.ASCII.GetBytes(shortFileName);
byte[] fileData = File.ReadAllBytes(longFileName);
byte[] clientData = new byte[4 + fileNameByte.Length + fileData.Length];
byte[] fileNameLen = BitConverter.GetBytes(fileNameByte.Length);
fileNameLen.CopyTo(clientData, 0);
fileNameByte.CopyTo(clientData, 4);
fileData.CopyTo(clientData, 4 + fileNameByte.Length);
}
catch
{
}
}
private void sendData(string clientIP, int clientPort, byte[] clientData)
{
TcpClient clientSocket = new TcpClient(clientIP, clientPort);
NetworkStream networkStream = clientSocket.GetStream();
networkStream.Write(clientData, 0, clientData.GetLength(0));
networkStream.Close();
clientSocket.Close();
}
prepareData()在程序加载时被调用;这是一项艰巨的任务。
sendData() 每隔几秒调用一次,应该从prepareData() 发送byte[] clientData。
如何将byte[]从第一种方法获取到第二种方法?
【问题讨论】:
-
byte[]是sendData发送什么? -
不明白。您是说您希望 senddata 发送创建的字节数组,然后在preparedata 中丢弃吗?或preparedata来调用senddata,或者完全是别的东西。
-
所以你在程序开始时将clientData存储在一个局部变量中,每隔几秒发送一次,但问题出在哪里?
-
问题是,当我想在 sendData 中发送它时,字节数组 clientData 是空的......它在 prepareData 中没有 byte[] clientData 的值