【发布时间】:2015-09-28 11:10:48
【问题描述】:
所以我正在尝试制作一个程序,它将我想从我的主 PC 中的客户端打印的文件发送到运行服务器并连接到打印机的第二台 PC。 当我测试我的代码时,我在我的主电脑上运行了客户端和服务器,它运行良好。但是,当我在我的主 PC 上运行客户端并在我的第二台 PC 上运行服务器时,文件已损坏,我不知道为什么。
这是我的Listener(我删除了我认为不必要的部分):
void Listener()
{
//All of these strings and bools are filled correctly I just removed it because its long
string file="";
string size = "";
bool print;
Socket server = myList.AcceptSocket();
var output = File.Create(file);
Console.WriteLine("Client connected. Starting to receive the file");
int k = 0;
int read = 0;
byte[] buffer = new byte[long.Parse(size)];
NetworkStream stm = new NetworkStream(server);
while ((k = stm.Read(buffer, 0, buffer.Length-read)) > 0)
{
read += k;
}
output.Write(buffer, 0, buffer.Length);
output.Close();
if (print) { PrintFile(file); }
server.Close();
Thread.CurrentThread.Abort();
}
这是客户端代码(我删除了我认为不必要的部分):
void startClient()
{
FileInfo f = new FileInfo(file);
Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
client.Connect(IPAddress.Parse("10.0.0.13"), 27015);
Console.WriteLine("Connected");
byte[] bytes = File.ReadAllBytes(file);
client.SendFile(file);
Console.WriteLine("File Sent");
client.Close();
}
有人知道如何解决这个问题吗?提前致谢!
【问题讨论】:
-
是有错误还是客户端只是未连接?你确定ip和端口是对的吗?也许您可以使用 DNS 而不是 ip。见stackoverflow.com/questions/14838421/…
-
@LaMiy 根本不相关。 OP提到连接很好,只是文件损坏了。
标签: c# sockets networking tcp corruption