C# TCP问题

来源:百度知道 编辑:UC知道 时间:2024/05/08 19:30:19
请问用下列代码发送文件的时候怎样判断文件发送成功了?
有可能在中间连接就断掉。

NetworkStream networkStream = tcpClient.GetStream();
FileStream fileStream = new FileStream("xxx.txt", FileMode.Open);
int sendCount = 0;
while (sendCount < fileStream.Length && networkStream.CanWrite)
{
int count = fileStream.Read(sendBuf, 0, sendBuf.Length);
networkStream.Write(sendBuf, 0, count);
sendCount += count;
}
fileStream.Close();
networkStream.Close();
我不需要重传。
我只想简单的如果这个文件发送成功了我就要把它删掉了,如果没成功我就不删掉它。
应该怎么判断?

tcp是保持连接的协议 你说的问题根本不存在 你只要注意是否发送完就行了 只要是发送完 就表示你的任务结束了
如果发送过程中连接断开,那么你声明的tcpClient必须去重新连接,以你现在的文件发送协议,断点重传是不可能的。只能重传。
如果你发送完毕后(ˇˍˇ) 想确认对方真的接受完毕,那么在第一次发送的时候把文件长度发给接收端,接收端接到的数据如果和改长度相等,就发一个成功的信息给你 你接到后就表示成功 然后再关闭networkStream

while (sendCount < fileStream.Length && networkStream.CanWrite)
{
int count = fileStream.Read(sendBuf, 0, sendBuf.Length);
networkStream.Write(sendBuf, 0, count);
sendCount += count;
}
if(sendCount >=fileStream.Length )
{
//成功
}