Sp|R|T
سه شنبه 22 مرداد 1392, 11:07 صبح
سلام من قصد دارم یه برنامه ای رو بنویسم که بشه یه فایل رو از طرف سرور به کلاینت ها ارسال کرد من واسه اینکار از متد Socket Programing استفاده کردم و الان بدون هچی مشکلی برنامم داره کار میکنه
ولی الان میخوام یکم توسعش بدم که وقتی فایل بصورت "کامل" ارسال شد، یه کارهای دیگه ای رو انجام بده
من الان دقیق نمیدونم که چطور شرط بزارم که آیا فایل بصورت کامل ارسال شده یا خیر
خب، این یه قسمتی از کدم هستش که فایل رو ارسال میکنه:
public void SendFile(string remoteHostIP, int remoteHostPort, string longFileName, string shortFileName)
{
try
{
if (!string.IsNullOrEmpty(remoteHostIP))
{
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);
TcpClient clientSocket = new TcpClient(remoteHostIP, remoteHostPort);
NetworkStream networkStream = clientSocket.GetStream();
networkStream.Write(clientData, 0, clientData.GetLength(0));
networkStream.Close();
MessageBox.Show("فایل ارسال شد");
}
else
{
MessageBox.Show("فایل ارسال نشد");
}
}
catch
{
MessageBox.Show("خطا در ارسال");
}
}
اگه دقت کنید، اونجا که نوشتم "فایل ارسال شد" میخوام قبلش یه شرط قرار بدم که چک کنه آیا فایل بصورت کامل ارسال شده یا خیر!
الان دقیق برنامم اینجوری کار میکنه؛ وقتی یه فایل با حجم بالا ارسال میکنم، بعد از 2 الی 3 ثانیه اون پیغام "فایل ارسال شد" رو نشون میده، در صورتی که میبینم هنوز فایل بصورت کامل ارسال نشده و فایل بصورت مخفی داره ارسال میشه که اینکار باعث میشه کاربر طرف سرور نفهمه که کِی فایل بصورت کامل ارسال شده!
امیدوارم منظورم رو گرفته باشید. :)
ممنونم
ولی الان میخوام یکم توسعش بدم که وقتی فایل بصورت "کامل" ارسال شد، یه کارهای دیگه ای رو انجام بده
من الان دقیق نمیدونم که چطور شرط بزارم که آیا فایل بصورت کامل ارسال شده یا خیر
خب، این یه قسمتی از کدم هستش که فایل رو ارسال میکنه:
public void SendFile(string remoteHostIP, int remoteHostPort, string longFileName, string shortFileName)
{
try
{
if (!string.IsNullOrEmpty(remoteHostIP))
{
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);
TcpClient clientSocket = new TcpClient(remoteHostIP, remoteHostPort);
NetworkStream networkStream = clientSocket.GetStream();
networkStream.Write(clientData, 0, clientData.GetLength(0));
networkStream.Close();
MessageBox.Show("فایل ارسال شد");
}
else
{
MessageBox.Show("فایل ارسال نشد");
}
}
catch
{
MessageBox.Show("خطا در ارسال");
}
}
اگه دقت کنید، اونجا که نوشتم "فایل ارسال شد" میخوام قبلش یه شرط قرار بدم که چک کنه آیا فایل بصورت کامل ارسال شده یا خیر!
الان دقیق برنامم اینجوری کار میکنه؛ وقتی یه فایل با حجم بالا ارسال میکنم، بعد از 2 الی 3 ثانیه اون پیغام "فایل ارسال شد" رو نشون میده، در صورتی که میبینم هنوز فایل بصورت کامل ارسال نشده و فایل بصورت مخفی داره ارسال میشه که اینکار باعث میشه کاربر طرف سرور نفهمه که کِی فایل بصورت کامل ارسال شده!
امیدوارم منظورم رو گرفته باشید. :)
ممنونم