socket匪夷所思啊 新手求指教
客户端 send第一次 比如send个用户名
客户端再send第二次 send个密码
服务端 receive第一次
receive第二次
服务端第一次接收到的一定是客户端第一次send的内容么 即用户名
难道不会receive一下 把客户端俩次send的内容 即把用户名和密码都给接收完了?
这是客户端的代码
C# code
// 给服务器发送要传送的文件名
byte[] filenameByte = new byte[256];
filenameByte = Encoding.Default.GetBytes(fileName);
netStream.Write(filenameByte, 0, filenameByte.Length);
netStream.Flush();
// 给服务器传送需要文件发送的次数
//netStream.Write(Encoding.Unicode.GetBytes(times_tobesended.ToString()), 0, Encoding.Unicode.GetBytes(times_tobesended.ToString()).Length);
// 给服务器发送总的文件大小
byte[] tempb = Encoding.Default.GetBytes(fileSize.ToString());
netStream.Write(Encoding.Default.GetBytes(fileSize.ToString()), 0, Encoding.Default.GetBytes(fileSize.ToString()).Length);
netStream.Flush();
这是服务器端接收的代码
C# code
byte[] fileBuffer = new byte[fileBuffer_eachTime_sended];
byte[] fileNameBuffer = new byte[256];
// 接收文件名
clientSocket.Receive(fileNameBuffer);
string fileName = Encoding.Default.GetString(fileNameBuffer).TrimEnd('\0');
//// 接收要传送的次数
//byte[] times_byte = new byte[8];
//clientSocket.Receive(times_byte);
//string temp = Encoding.Default.GetString(times_byte).TrimEnd('\0');
//int number_of_receive = int.Parse(temp);
// 接收总的文件大小
byte[] fileSize_byte = new byte[16];
clientSocket.Receive(fileSize_byte);
string fileSize_string = Encoding.Default.GetString(fileSize_byte).TrimEnd('\0');
long sumFileSize = Convert.ToInt32(fileSize_string, 10);
最后一行会报错
而且string fileName = Encoding.Default.GetString(fileNameBuffer).TrimEnd('\0');
filename的取到的值为"示例图片_02.jpg123777