客户端 send第一次 比如send个用户名
客户端再send第二次 send个密码 服务端 receive第一次
receive第二次
服务端第一次接收到的一定是客户端第一次send的内容么 即用户名
难道不会receive一下 把客户端俩次send的内容 即把用户名和密码都给接收完了?
客户端再send第二次 send个密码 服务端 receive第一次
receive第二次
服务端第一次接收到的一定是客户端第一次send的内容么 即用户名
难道不会receive一下 把客户端俩次send的内容 即把用户名和密码都给接收完了?
encoding.default.getbytes("user")
receive完 encoidng.default.getstring(bytes)
返回个字符串 u\0\s\0\e\0r\0
为啥出现这些\0啊 怎么去掉呢 又不能trim掉 replace(string,'')也不行 第二个参数不能为空char
string result = Encoding.GetEncoding("utf-8").GetString(bytes);
//两边编码要统一
// 给服务器发送要传送的文件名
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(); 这是服务器端接收的代码 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??JFIF"
123777 的确是图片的大小 是不是说它确实读了 俩次发送的流 还是networkstream.write的机制有问题啊