我试图从客户端发送文件到服务器,所以我加载文件在客户端的一个字节数组,并将其发送到服务器槽发送()的方法,但所接收到的阵列是不同的,比发送的阵列更大,不知是否它是一个协议的问题(但是我使用TCP协议至极保证错误检测):数据收到不同于数据发送槽通过尖锐的插座
客户机代码:
IPAddress ipAddress = new IPAddress(ip);
IPEndPoint ipEnd = new IPEndPoint(ipAddress, 5656);
Socket clientSock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
FileStream fl = File.Open("pos.xls",FileMode.Open);
byte[] fileData = ReadFully(fl);
fl.Close();
byte[] clientData = new byte[ fileData.Length];
fileData.CopyTo(clientData,0);
curMsg = "Connection to server ...";
clientSock.Connect(ipEnd);
curMsg = "File sending...";
clientSock.Send(clientData);
curMsg = "Disconnecting...";
clientSock.Close();
curMsg = "File transferred.";
服务器代码:
curMsg = "Starting...";
sock.Listen(100);
curMsg = "Running and waiting to receive file.";
byte[] clientData = new byte[1024 * 5000];
while (true)
{
Socket clientSock = sock.Accept();
clientData = new byte[1024 * 5000];
int receivedBytesLen = clientSock.Receive(clientData);
curMsg = "Receiving data...";
FileStream fz = writeFully(clientData);
fz.Close();
curMsg = "Saving file...";
感谢你的帮助
您能否显示发送和接收到的不同数据 – skyfoot
您是否尝试发送一小块已知字节(例如,新字节[] {1,2,3,4,5,6}或其他),然后进行比较另一端是什么?它可能会使你指向正确的方向;例如收到的尺寸是否更大?如果是这样,它与大文件一样大吗?你发送的模式是否出现在输出数据的某处?等 – shelleybutterfly
我想发送一个Excel文件(1.65 MB),我收到一个5.12 MB的文件,我敢肯定,当我发送槽网络时发生字节数组的问题,因为我检查发送之前的字节数组的大小和它是好的,并且在发送到服务器之后,它也改变了 –